@equinor/amplify-component-lib 9.1.2 → 9.3.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 (107) hide show
  1. package/dist/atoms/hooks/index.d.ts +1 -2
  2. package/dist/atoms/icons/drilling.d.ts +1 -0
  3. package/dist/atoms/icons/drilling.js +1 -1
  4. package/dist/atoms/index.js +1 -1
  5. package/dist/atoms/utils/date.d.ts +12 -3
  6. package/dist/atoms/utils/date.js +1 -1
  7. package/dist/atoms/utils/index.d.ts +1 -0
  8. package/dist/atoms/utils/richtext.js +1 -1
  9. package/dist/atoms/utils/tutorials.d.ts +10 -0
  10. package/dist/atoms/utils/tutorials.js +1 -0
  11. package/dist/index.js +1 -1
  12. package/dist/molecules/DatePicker/DatePicker.js +1 -1
  13. package/dist/molecules/FileProgress/CompactFileProgress.d.ts +2 -4
  14. package/dist/molecules/FileProgress/CompactFileProgress.js +1 -1
  15. package/dist/molecules/FileProgress/CompactFileProgress.styles.d.ts +2 -0
  16. package/dist/molecules/FileProgress/FileProgress.d.ts +15 -25
  17. package/dist/molecules/FileProgress/FileProgress.types.d.ts +41 -0
  18. package/dist/molecules/FileProgress/RegularFileProgress.d.ts +2 -4
  19. package/dist/molecules/FileProgress/RegularFileProgress.js +1 -1
  20. package/dist/molecules/OptionalTooltip/OptionalTooltip.d.ts +1 -0
  21. package/dist/molecules/RichTextEditor/index.js +1 -1
  22. package/dist/molecules/Select/GroupedSelectMenu.js +1 -1
  23. package/dist/molecules/Select/ListSelectMenu.js +1 -1
  24. package/dist/molecules/Select/Select.js +1 -1
  25. package/dist/molecules/Select/Select.types.d.ts +5 -8
  26. package/dist/molecules/Select/SelectMenuItem.js +1 -1
  27. package/dist/molecules/Select/SingleSelect/SingleSelect.js +1 -1
  28. package/dist/molecules/index.d.ts +2 -1
  29. package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/index.js +1 -1
  30. package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/spacings.js +1 -1
  31. package/dist/node_modules/prosemirror-transform/dist/index.js +1 -1
  32. package/dist/organisms/FieldSelector/ChangingField.js +4 -4
  33. package/dist/organisms/Filter/Filter.styles.js +1 -1
  34. package/dist/organisms/Filter/QuickFilter.js +1 -1
  35. package/dist/organisms/Filter/Sorting.js +2 -2
  36. package/dist/organisms/PageTitle/PageTitle.d.ts +7 -0
  37. package/dist/organisms/PageTitle/PageTitle.js +1 -0
  38. package/dist/organisms/SideBar/CreateItem.styles.js +1 -0
  39. package/dist/organisms/SideBar/MenuItem.styles.js +1 -0
  40. package/dist/organisms/SideBar/SideBar.styles.js +2 -0
  41. package/dist/organisms/Status/Illustration.js +2 -2
  42. package/dist/organisms/Status/collections/MissingAccessToApp.js +1 -1
  43. package/dist/organisms/TableOfContents/TableOfContents.constants.js +1 -1
  44. package/dist/organisms/TopBar/Account/Account.js +1 -1
  45. package/dist/organisms/TopBar/Account/AccountAvatar.js +3 -3
  46. package/dist/organisms/TopBar/Account/AccountButton.js +3 -3
  47. package/dist/organisms/TopBar/Account/ActiveUserImpersonationButton.js +4 -4
  48. package/dist/organisms/TopBar/Account/ImpersonateAvatar.js +2 -2
  49. package/dist/organisms/TopBar/Account/ImpersonateButton.js +1 -1
  50. package/dist/organisms/TopBar/Account/ImpersonateMenu/DeleteUser/DeleteUser.js +1 -1
  51. package/dist/organisms/TopBar/Account/ImpersonateMenu/DeleteUser/DeleteUser.styles.js +1 -1
  52. package/dist/organisms/TopBar/Account/ImpersonateMenu/Impersonate.styles.js +1 -1
  53. package/dist/organisms/TopBar/Account/ImpersonateMenu/Impersonate.utils.d.ts +2 -0
  54. package/dist/organisms/TopBar/Account/ImpersonateMenu/Impersonate.utils.js +1 -0
  55. package/dist/organisms/TopBar/Account/ImpersonateMenu/ImpersonateMenu.js +1 -1
  56. package/dist/organisms/TopBar/Account/ImpersonateMenu/UserImpersonation.js +6 -6
  57. package/dist/organisms/TopBar/Account/ImpersonateMenu/hooks/useStartImpersonation.js +1 -1
  58. package/dist/organisms/TopBar/Notifications/NotificationProvider.js +1 -1
  59. package/dist/organisms/TopBar/Resources/Feedback/FeedbackForm/UploadFile/UploadFile.styles.d.ts +2 -0
  60. package/dist/organisms/TopBar/Resources/Feedback/providers/FeedbackContextProvider.js +1 -1
  61. package/dist/organisms/TopBar/Resources/ReleaseNotesDialog/ReleaseNotes.js +1 -1
  62. package/dist/organisms/TopBar/Resources/ReleaseNotesDialog/ReleasePosts/ReleasePost/ReleasePost.js +1 -1
  63. package/dist/organisms/TopBar/Resources/Resources.d.ts +0 -3
  64. package/dist/organisms/TopBar/Resources/Resources.js +5 -5
  65. package/dist/organisms/TopBar/TransferToAppDialog.js +3 -3
  66. package/dist/organisms/TopBar/Tutorials/TutorialItem.d.ts +8 -0
  67. package/dist/organisms/TopBar/Tutorials/TutorialItem.js +21 -0
  68. package/dist/organisms/TopBar/Tutorials/Tutorials.d.ts +6 -0
  69. package/dist/organisms/TopBar/Tutorials/Tutorials.js +1 -0
  70. package/dist/organisms/TopBar/Tutorials/Tutorials.styles.d.ts +2 -0
  71. package/dist/organisms/TopBar/Tutorials/Tutorials.styles.js +18 -0
  72. package/dist/organisms/TopBar/index.d.ts +2 -0
  73. package/dist/organisms/TopBar/index.js +1 -1
  74. package/dist/organisms/index.d.ts +1 -0
  75. package/dist/providers/AuthProvider/AuthProvider.js +1 -1
  76. package/dist/providers/ReleaseNotesProvider.utils.js +1 -1
  77. package/dist/providers/SnackbarProvider/APIErrorSnackbar.d.ts +6 -0
  78. package/dist/providers/SnackbarProvider/APIErrorSnackbar.js +1 -0
  79. package/dist/providers/SnackbarProvider/SnackbarProvider.d.ts +5 -0
  80. package/dist/providers/SnackbarProvider/SnackbarProvider.js +1 -1
  81. package/dist/providers/StepperProvider.d.ts +13 -2
  82. package/dist/providers/StepperProvider.js +1 -1
  83. package/dist/providers/TableOfContentsProvider.js +1 -1
  84. package/dist/providers/ThemeProvider/ThemeProvider.js +1 -1
  85. package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.constants.d.ts +2 -0
  86. package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.constants.js +1 -0
  87. package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.d.ts +11 -0
  88. package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProvider.js +1 -0
  89. package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProviderInner.d.ts +6 -0
  90. package/dist/providers/TutorialHighlightingProvider/TutorialHighlightingProviderInner.js +24 -0
  91. package/dist/providers/TutorialHighlightingProvider/TutorialPopover/StepIndicator.d.ts +6 -0
  92. package/dist/providers/TutorialHighlightingProvider/TutorialPopover/StepIndicator.js +20 -0
  93. package/dist/providers/TutorialHighlightingProvider/TutorialPopover/TutorialPopover.d.ts +11 -0
  94. package/dist/providers/TutorialHighlightingProvider/TutorialPopover/TutorialPopover.js +45 -0
  95. package/dist/providers/TutorialHighlightingProvider/hooks/useReversedScrollY.d.ts +1 -0
  96. package/dist/providers/TutorialHighlightingProvider/hooks/useReversedScrollY.js +1 -0
  97. package/dist/providers/index.d.ts +1 -1
  98. package/dist/tests/mockHandlers.d.ts +5 -1
  99. package/package.json +69 -69
  100. package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/clickbounds.js +0 -1
  101. package/dist/node_modules/@equinor/eds-tokens/dist/esm/base/interactions.js +0 -1
  102. package/dist/organisms/TopBar/Resources/Tutorials/TutorialInfoDialog.d.ts +0 -15
  103. package/dist/organisms/TopBar/Resources/Tutorials/TutorialInfoDialog.js +0 -15
  104. package/dist/organisms/TopBar/Resources/Tutorials/TutorialItem.d.ts +0 -3
  105. package/dist/organisms/TopBar/Resources/Tutorials/TutorialItem.js +0 -12
  106. package/dist/providers/TutorialStepsProvider.d.ts +0 -23
  107. package/dist/providers/TutorialStepsProvider.js +0 -1
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";import{useState as t,useRef as i}from"react";import{Typography as s,Icon as l}from"@equinor/eds-core-react";import{arrow_drop_up as m,arrow_drop_down as a}from"@equinor/eds-icons";import{ReleaseNotesTypes as n}from"../../ReleaseNotesTypes/ReleaseNotesTypes.js";import{Container as p,TopContainer as c,HeadingContainer as u,RightContainer as d,ReleaseNoteTypeContainer as h,TitleContainer as j,BodyContainer as v,BtnContainer as g,Button as S,AccordionText as P}from"./ReleasePost.styles.js";import"../../../../../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../../../../../molecules/RichTextEditor/RichTextEditor.types.js";import"../../../../../../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../../../../../atoms/enums/Environment.js";import"../../../../../../atoms/utils/auth_environment.js";import"../../../../Notifications/NotificationProvider.js";import"../../../../../../providers/AuthProvider/AuthProvider.js";import"../../../../../../providers/ReleaseNotesProvider.js";import"../../../../../../providers/SideBarProvider.js";import"../../../../../../providers/SnackbarProvider/SnackbarProvider.js";import"../../../../../../providers/StepperProvider.js";import"../../../../../../providers/TableOfContentsProvider.js";import"../../../../../../providers/ThemeProvider/ThemeProvider.js";import"../../../../../../providers/TutorialStepsProvider.js";import"../../../../../../atoms/style/colors.js";import"../../../../../../atoms/enums/Errors.js";import"../../../../../../atoms/enums/Theme.js";import"../../../../../../atoms/enums/SpacingsMode.js";import{formatDate as f}from"../../../../../../atoms/utils/date.js";import"html2canvas";import"proj4";import"../../../../../../molecules/AnimatedCheckmark/AnimatedCheckmark.styles.js";import"../../../../../../molecules/ApplicationIcon/ApplicationIcon.js";import"../../../../../../molecules/Badge/Badge.styles.js";import"../../../../../../molecules/Banner/Banner.styles.js";import"../../../../../../molecules/Chip/Chip.js";import"../../../../../../molecules/ContentMenu/ContentMenu.styles.js";import"../../../../../../molecules/DatePicker/DatePicker.js";import"../../../../../../molecules/Dialog/Dialog.js";import"../../../../../../molecules/EquinorLogo/EquinorLogo.js";import"../../../../../../molecules/FileProgress/CompactFileProgress.styles.js";import"../../../../../../molecules/FileProgress/RegularFileProgress.styles.js";import"../../../../../../molecules/FileUploadArea/FileUploadArea.js";import"../../../../../../molecules/FullPageSpinner/FullPageSpinner.js";import"../../../../../../molecules/InfoElement/InfoElement.js";import"../../../../../../molecules/OptionalTooltip/OptionalTooltip.js";import"../../../../../../molecules/ProfileAvatar/ProfileAvatar.js";import{RichTextDisplay as R}from"../../../../../../molecules/RichTextDisplay/RichTextDisplay.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuBar.js";import"@tiptap/react";import"../../../../../../molecules/RichTextEditor/RichTextEditor.styles.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuBar.styles.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuButton.js";import"../../../../../../molecules/Search/Search.js";import"react-router-dom";import"../../../../../../molecules/Sieve/Sieve.styles.js";import"../../../../../../molecules/SingleFilterMenu/SingleFilterMenu.js";import"../../../../../../molecules/Skeleton/SkeletonBase/SkeletonBase.js";import"../../../../../../molecules/Skeleton/Skeleton.styles.js";import"../../../../../../molecules/Stepper/Stepper.js";import"../../../../../../molecules/OptionDrawer/OptionDrawer.js";import"../../../../../../molecules/Select/Select.styles.js";import"../../../../../../molecules/ListItem/ListItem.js";import"../../../../../../molecules/SelectionControls/Checkbox/Checkbox.js";import"../../../../../../molecules/SelectionControls/Radio/Radio.js";import"../../../../../../molecules/SelectionControls/Switch/Switch.js";import{releaseNoteImageRead as y}from"./ReleasePost.utils.js";import{motion as T}from"framer-motion";const k=({createdDate:k,version:x,tags:C,title:E,body:B})=>{const[A,D]=t(!1),[M,F]=t(!1),b=i(new ResizeObserver((e=>{const{height:o}=e[0].contentRect;F(o>108)}))),I=A?"Read less":"Read more";return e(p,{"data-testid":"release-post",children:o(T.div,{initial:{height:"250px"},animate:{height:A?"auto":"250px"},children:[o(c,{children:[o(u,{children:[e(s,{group:"paragraph",variant:"overline",children:f(k,{format:"DD. month YYYY"})}),e(s,{group:"paragraph",variant:"overline",children:x})]}),e(d,{children:C?.map((o=>e(h,{children:e(n,{name:o,active:!0,showIcon:!1})},o)))})]}),e(j,{children:e(s,{group:"heading",variant:"h3",children:E})}),e(v,{ref:e=>{e&&b.current.observe(e)},children:e(R,{value:B,onImageRead:y})}),e(g,{$open:M,children:M&&e(S,{variant:"ghost_icon",onClick:()=>{D((e=>!e))},children:o(r,A?{children:[e(P,{children:I}),e(l,{data:m})]}:{children:[e(P,{children:I}),e(l,{data:a})]})})})]})})};export{k as ReleasePost};
1
+ import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";import{useState as t,useRef as i}from"react";import{Typography as s,Icon as l}from"@equinor/eds-core-react";import{arrow_drop_up as m,arrow_drop_down as a}from"@equinor/eds-icons";import{ReleaseNotesTypes as n}from"../../ReleaseNotesTypes/ReleaseNotesTypes.js";import{Container as p,TopContainer as c,HeadingContainer as u,RightContainer as d,ReleaseNoteTypeContainer as h,TitleContainer as j,BodyContainer as v,BtnContainer as g,Button as S,AccordionText as f}from"./ReleasePost.styles.js";import"../../../../../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../../../../../molecules/RichTextEditor/RichTextEditor.types.js";import"../../../../../../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../../../../../atoms/enums/Environment.js";import"../../../../../../atoms/utils/auth_environment.js";import"../../../../Notifications/NotificationProvider.js";import"../../../../../../providers/AuthProvider/AuthProvider.js";import"../../../../../../providers/ReleaseNotesProvider.js";import"../../../../../../providers/SideBarProvider.js";import"../../../../../../providers/SnackbarProvider/SnackbarProvider.js";import"../../../../../../providers/StepperProvider.js";import"../../../../../../providers/TableOfContentsProvider.js";import"../../../../../../providers/ThemeProvider/ThemeProvider.js";import"../../../../../../atoms/style/colors.js";import"../../../../../../atoms/enums/Errors.js";import"../../../../../../atoms/enums/Theme.js";import"../../../../../../atoms/enums/SpacingsMode.js";import{formatDate as P}from"../../../../../../atoms/utils/date.js";import"html2canvas";import"proj4";import"../../../../../../molecules/AnimatedCheckmark/AnimatedCheckmark.styles.js";import"../../../../../../molecules/ApplicationIcon/ApplicationIcon.js";import"../../../../../../molecules/Badge/Badge.styles.js";import"../../../../../../molecules/Banner/Banner.styles.js";import"../../../../../../molecules/Chip/Chip.js";import"../../../../../../molecules/ContentMenu/ContentMenu.styles.js";import"../../../../../../molecules/DatePicker/DatePicker.js";import"../../../../../../molecules/Dialog/Dialog.js";import"../../../../../../molecules/EquinorLogo/EquinorLogo.js";import"../../../../../../molecules/FileProgress/CompactFileProgress.styles.js";import"../../../../../../molecules/FileProgress/RegularFileProgress.styles.js";import"../../../../../../molecules/FileUploadArea/FileUploadArea.js";import"../../../../../../molecules/FullPageSpinner/FullPageSpinner.js";import"../../../../../../molecules/InfoElement/InfoElement.js";import"../../../../../../molecules/OptionalTooltip/OptionalTooltip.js";import"../../../../../../molecules/ProfileAvatar/ProfileAvatar.js";import{RichTextDisplay as R}from"../../../../../../molecules/RichTextDisplay/RichTextDisplay.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuBar.js";import"@tiptap/react";import"../../../../../../molecules/RichTextEditor/RichTextEditor.styles.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuBar.styles.js";import"../../../../../../molecules/RichTextEditor/MenuBar/MenuButton.js";import"../../../../../../molecules/Search/Search.js";import"react-router-dom";import"../../../../../../molecules/Sieve/Sieve.styles.js";import"../../../../../../molecules/SingleFilterMenu/SingleFilterMenu.js";import"../../../../../../molecules/Skeleton/SkeletonBase/SkeletonBase.js";import"../../../../../../molecules/Skeleton/Skeleton.styles.js";import"../../../../../../molecules/Stepper/Stepper.js";import"../../../../../../molecules/OptionDrawer/OptionDrawer.js";import"../../../../../../molecules/Select/Select.styles.js";import"../../../../../../molecules/ListItem/ListItem.js";import"../../../../../../molecules/SelectionControls/Checkbox/Checkbox.js";import"../../../../../../molecules/SelectionControls/Radio/Radio.js";import"../../../../../../molecules/SelectionControls/Switch/Switch.js";import{releaseNoteImageRead as y}from"./ReleasePost.utils.js";import{motion as T}from"framer-motion";const k=({createdDate:k,version:x,releaseDate:C,tags:E,title:B,body:D})=>{const[A,M]=t(!1),[F,b]=t(!1),I=i(new ResizeObserver((e=>{const{height:o}=e[0].contentRect;b(o>108)}))),q=A?"Read less":"Read more";return e(p,{"data-testid":"release-post",children:o(T.div,{initial:{height:"250px"},animate:{height:A?"auto":"250px"},children:[o(c,{children:[o(u,{children:[e(s,{group:"paragraph",variant:"overline",children:P(C||k,{format:"DD. month YYYY"})}),e(s,{group:"paragraph",variant:"overline",children:x})]}),e(d,{children:E?.map((o=>e(h,{children:e(n,{name:o,active:!0,showIcon:!1})},o)))})]}),e(j,{children:e(s,{group:"heading",variant:"h3",children:B})}),e(v,{ref:e=>{e&&I.current.observe(e)},children:e(R,{value:D,onImageRead:y})}),e(g,{$open:F,children:F&&e(S,{variant:"ghost_icon",onClick:()=>{M((e=>!e))},children:o(r,A?{children:[e(f,{children:q}),e(l,{data:m})]}:{children:[e(f,{children:q}),e(l,{data:a})]})})})]})})};export{k as ReleasePost};
@@ -1,13 +1,10 @@
1
1
  import { FC, MutableRefObject, ReactElement, ReactNode } from 'react';
2
- import { tutorialOptions } from './Tutorials/TutorialInfoDialog';
3
2
  export interface ResourcesProps {
4
3
  field?: string;
5
4
  hideFeedback?: boolean;
6
5
  hideReleaseNotes?: boolean;
7
6
  hideLearnMore?: boolean;
8
7
  children?: ReactNode;
9
- showTutorials?: boolean;
10
- tutorialOptions?: tutorialOptions[];
11
8
  customButton?: (ref: MutableRefObject<HTMLButtonElement | null>, onToggle: () => void) => ReactElement;
12
9
  }
13
10
  export declare const Resources: FC<ResourcesProps>;
@@ -1,6 +1,6 @@
1
- import{jsxs as e,Fragment as o,jsx as r}from"react/jsx-runtime";import{useState as t,useRef as i,useMemo as s}from"react";import{Dialog as n,Divider as a,Button as l,Icon as m}from"@equinor/eds-core-react";import{youtube_alt as c,arrow_back as d,report_bug as p,lightbulb as u,file_description as h,school as f}from"@equinor/eds-icons";import{TopBarButton as T}from"../TopBar.styles.js";import{TopBarMenu as g}from"../TopBarMenu.js";import{TransferToAppDialog as j}from"../TransferToAppDialog.js";import{Feedback as k}from"./Feedback/Feedback.js";import{FeedbackType as v}from"./Feedback/Feedback.types.js";import{ReleaseNotes as C}from"./ReleaseNotesDialog/ReleaseNotes.js";import{TutorialInfoDialog as R}from"./Tutorials/TutorialInfoDialog.js";import{ResourceMenuItem as x}from"./ResourceMenuItem.js";import{amplify_small_portal as O,amplify_resources as b}from"../../../atoms/icons/other.js";import"../../../atoms/style/colors.js";import{spacings as y}from"../../../atoms/style/spacings.js";import{environment as I}from"../../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../../../molecules/RichTextEditor/RichTextEditor.types.js";import{useReleaseNotes as N}from"../../../providers/ReleaseNotesProvider.js";import S from"styled-components";const{PORTAL_URL_WITHOUT_LOCALHOST:B}=I,G=S(n)`
1
+ import{jsxs as e,Fragment as o,jsx as r}from"react/jsx-runtime";import{useState as i,useRef as t,useMemo as n}from"react";import{Dialog as s,Divider as a,Button as l,Icon as m}from"@equinor/eds-core-react";import{arrow_back as c,report_bug as d,lightbulb as p,file_description as u,school as h}from"@equinor/eds-icons";import{TopBarButton as f}from"../TopBar.styles.js";import{TopBarMenu as g}from"../TopBarMenu.js";import{TransferToAppDialog as j}from"../TransferToAppDialog.js";import{Feedback as v}from"./Feedback/Feedback.js";import{FeedbackType as k}from"./Feedback/Feedback.types.js";import{ReleaseNotes as T}from"./ReleaseNotesDialog/ReleaseNotes.js";import{ResourceMenuItem as C}from"./ResourceMenuItem.js";import{amplify_small_portal as R,amplify_resources as x}from"../../../atoms/icons/other.js";import"../../../atoms/style/colors.js";import{spacings as b}from"../../../atoms/style/spacings.js";import{environment as y}from"../../../atoms/utils/auth_environment.js";import"html2canvas";import"proj4";import"../../../molecules/RichTextEditor/RichTextEditor.types.js";import{useReleaseNotes as N}from"../../../providers/ReleaseNotesProvider.js";import O from"styled-components";const{PORTAL_URL_WITHOUT_LOCALHOST:S}=y,B=O(s)`
2
2
  width: fit-content;
3
- `,U=S.div`
4
- padding: ${y.medium} ${y.medium} ${y.small}
5
- ${y.medium};
6
- `,L=({field:y,hideFeedback:I=!1,hideReleaseNotes:S=!1,hideLearnMore:L=!1,children:E,tutorialOptions:F,showTutorials:H,customButton:_})=>{const{open:A,toggle:D}=N(),[$,w]=t(!1),[M,P]=t(!1),[q,W]=t(!1),[z,J]=t(!1),[K,Q]=t(void 0),V=i(null),[X,Y]=t(void 0),Z=()=>{Q(void 0),w(!1)},ee=()=>w((e=>!e)),oe=e=>{Y(e?.currentTarget.id),P(!0)},re=()=>{Y(void 0),Z(),P(!1)},te=()=>Q(void 0),ie=()=>{W(!0)},se=()=>{J(!0)},ne=s((()=>"learn-more"===K?e(o,{children:[r(x,{text:"Open Application portal",icon:O,onClick:ie,isHref:!0}),H&&r(x,{text:"Tutorials",icon:c,onClick:se,lastItem:!0}),E&&!I&&!S&&r(a,{style:{margin:0}}),E&&r("div",{onClick:Z,children:E}),r(U,{children:e(l,{variant:"outlined",onClick:te,children:[r(m,{data:d})," Back"]})})]}):null),[E,I,S,H,K]);return e(o,{children:[_?_(V,ee):r(T,{variant:"ghost_icon",ref:V,id:"anchor-match","aria-haspopup":"true","aria-expanded":$,"aria-controls":"menu-match",onClick:ee,children:r(m,{data:b})}),r(g,{open:$&&!A&&!M,title:"Resources",onClose:Z,anchorEl:V.current,children:ne||e(o,{children:[r(x,{id:v.BUG,onClick:oe,icon:p,text:"Report a bug",lastItem:!0}),r(x,{id:v.SUGGESTION,onClick:oe,icon:u,text:"Suggest idea",lastItem:!0}),!S&&r(x,{id:"release-notes",icon:h,onClick:D,text:"Open release notes",isHref:!0}),!L&&r(x,{text:"Learn more",icon:f,onClick:()=>Q("learn-more")})]})}),z&&F&&r(R,{options:F,open:z,onClose:()=>{J(!1),Z()}}),A&&r(C,{}),!I&&void 0!==X&&e(G,{open:X===v.BUG||X===v.SUGGESTION,onClose:re,isDismissable:!0,children:[r(n.Header,{children:X===v.BUG?"Report a bug - ServiceNow":"Suggest a feature"}),r(k,{field:y,selectedType:X,onClose:re})]}),q&&r(j,{onClose:()=>{W(!1),Z()},url:B,applicationName:"Portal"})]})};export{L as Resources};
3
+ `,G=O.div`
4
+ padding: ${b.medium} ${b.medium} ${b.small}
5
+ ${b.medium};
6
+ `,U=({field:b,hideFeedback:y=!1,hideReleaseNotes:O=!1,hideLearnMore:U=!1,children:I,customButton:L})=>{const{open:E,toggle:F}=N(),[H,_]=i(!1),[A,$]=i(!1),[D,M]=i(!1),[P,q]=i(void 0),w=t(null),[W,z]=i(void 0),J=()=>{q(void 0),_(!1)},K=()=>_((e=>!e)),Q=e=>{z(e?.currentTarget.id),$(!0)},V=()=>{z(void 0),J(),$(!1)},X=()=>q(void 0),Y=()=>{M(!0)},Z=n((()=>"learn-more"===P?e(o,{children:[r(C,{text:"Open Application portal",icon:R,onClick:Y,isHref:!0}),I&&!y&&!O&&r(a,{style:{margin:0}}),I&&r("div",{onClick:J,children:I}),r(G,{children:e(l,{variant:"outlined",onClick:X,children:[r(m,{data:c})," Back"]})})]}):null),[I,y,O,P]);return e(o,{children:[L?L(w,K):r(f,{variant:"ghost_icon",ref:w,id:"anchor-match","aria-haspopup":"true","aria-expanded":H,"aria-controls":"menu-match",onClick:K,children:r(m,{data:x})}),r(g,{open:H&&!E&&!A,title:"Resources",onClose:J,anchorEl:w.current,children:Z||e(o,{children:[r(C,{id:k.BUG,onClick:Q,icon:d,text:"Report a bug",lastItem:!0}),r(C,{id:k.SUGGESTION,onClick:Q,icon:p,text:"Suggest idea",lastItem:!0}),!O&&r(C,{id:"release-notes",icon:u,onClick:F,text:"Open release notes",isHref:!0}),!U&&r(C,{text:"Learn more",icon:h,onClick:()=>q("learn-more")})]})}),E&&r(T,{}),!y&&void 0!==W&&e(B,{open:W===k.BUG||W===k.SUGGESTION,onClose:V,isDismissable:!0,children:[r(s.Header,{children:W===k.BUG?"Report a bug - ServiceNow":"Suggest a feature"}),r(v,{field:b,selectedType:W,onClose:V})]}),D&&r(j,{onClose:()=>{M(!1),J()},url:S,applicationName:"Portal"})]})};export{U as Resources};
@@ -1,4 +1,4 @@
1
- import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as o,Typography as t,Button as s,Icon as n,LinearProgress as a}from"@equinor/eds-core-react";import{close as m}from"@equinor/eds-icons";import"react";import"../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../molecules/RichTextEditor/RichTextEditor.types.js";import{useFakeProgress as p}from"../../atoms/hooks/useFakeProgress.js";import"../../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../atoms/enums/Environment.js";import"../../atoms/utils/auth_environment.js";import"./Notifications/NotificationProvider.js";import"../../providers/AuthProvider/AuthProvider.js";import"../../providers/ReleaseNotesProvider.js";import"../../providers/SideBarProvider.js";import"../../providers/SnackbarProvider/SnackbarProvider.js";import"../../providers/StepperProvider.js";import"../../providers/TableOfContentsProvider.js";import"../../providers/ThemeProvider/ThemeProvider.js";import"../../providers/TutorialStepsProvider.js";import"../../atoms/style/colors.js";import{spacings as d}from"../../atoms/style/spacings.js";import"html2canvas";import"proj4";import{capitalize as l}from"../../atoms/utils/string.js";import{AnimatedCheckmark as c}from"../../molecules/AnimatedCheckmark/AnimatedCheckmark.js";import h from"styled-components";const u=h(o)`
1
+ import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as t,Typography as o,Button as s,Icon as n,LinearProgress as a}from"@equinor/eds-core-react";import{close as m}from"@equinor/eds-icons";import"react";import"../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../molecules/RichTextEditor/RichTextEditor.types.js";import{useFakeProgress as p}from"../../atoms/hooks/useFakeProgress.js";import"../../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../atoms/enums/Environment.js";import"../../atoms/utils/auth_environment.js";import"./Notifications/NotificationProvider.js";import"../../providers/AuthProvider/AuthProvider.js";import"../../providers/ReleaseNotesProvider.js";import"../../providers/SideBarProvider.js";import"../../providers/SnackbarProvider/SnackbarProvider.js";import"../../providers/StepperProvider.js";import"../../providers/TableOfContentsProvider.js";import"../../providers/ThemeProvider/ThemeProvider.js";import"../../atoms/style/colors.js";import{spacings as d}from"../../atoms/style/spacings.js";import"html2canvas";import"proj4";import{capitalize as l}from"../../atoms/utils/string.js";import{AnimatedCheckmark as c}from"../../molecules/AnimatedCheckmark/AnimatedCheckmark.js";import h from"styled-components";const u=h(t)`
2
2
  width: 400px;
3
3
  height: 323px;
4
4
  `,v=h.div`
@@ -15,7 +15,7 @@ import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as
15
15
  width: 100%;
16
16
  max-width: 370px;
17
17
  padding: ${d.medium} ${d.large};
18
- `,f=h(t)`
18
+ `,f=h(o)`
19
19
  span {
20
20
  text-transform: capitalize;
21
21
  }
@@ -30,4 +30,4 @@ import{jsx as r,Fragment as e,jsxs as i}from"react/jsx-runtime";import{Dialog as
30
30
  width: 100%;
31
31
  align-items: center;
32
32
  padding: ${d.large} 0;
33
- `,x=({onClose:d,applicationName:h,url:x})=>{const{finished:P,progress:k}=p({onDone:()=>window.open(x,"_self")});return r(e,{children:i(u,{open:!0,children:[i(o.Header,{children:["Open link",r(s,{variant:"ghost_icon",onClick:d,"data-testid":"close-transfer-app",children:r(n,{data:m})})]}),r(o.CustomContent,{children:r(v,{children:P?i(g,{children:[r(f,{variant:"h3",children:r("span",{children:l(h)})}),r(c,{size:"small"})]}):i(j,{children:[i(t,{variant:"h3",children:["Transferring you to application.",".".repeat(k/35)]}),r(a,{variant:"determinate",value:k})]})})})]})})};export{x as TransferToAppDialog};
33
+ `,x=({onClose:d,applicationName:h,url:x})=>{const{finished:P,progress:k}=p({onDone:()=>window.open(x,"_self")});return r(e,{children:i(u,{open:!0,children:[i(t.Header,{children:["Open link",r(s,{variant:"ghost_icon",onClick:d,"data-testid":"close-transfer-app",children:r(n,{data:m})})]}),r(t.CustomContent,{children:r(v,{children:P?i(g,{children:[r(f,{variant:"h3",children:r("span",{children:l(h)})}),r(c,{size:"small"})]}):i(j,{children:[i(o,{variant:"h3",children:["Transferring you to application.",".".repeat(k/35)]}),r(a,{variant:"determinate",value:k})]})})})]})})};export{x as TransferToAppDialog};
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { MyTutorialDto } from '@equinor/subsurface-app-management';
3
+ interface TutorialItemProps extends MyTutorialDto {
4
+ onTutorialStart: (tutorialId: string) => void;
5
+ onClose: () => void;
6
+ }
7
+ export declare const TutorialItem: FC<TutorialItemProps>;
8
+ export {};
@@ -0,0 +1,21 @@
1
+ import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Icon as i,Typography as a}from"@equinor/eds-core-react";import{check as o,chevron_right as e}from"@equinor/eds-icons";import{useTutorials as n}from"@equinor/subsurface-app-management";import{animation as s}from"../../../atoms/style/animation.js";import{colors as m}from"../../../atoms/style/colors.js";import{spacings as l}from"../../../atoms/style/spacings.js";import c from"styled-components";const p=c.button`
2
+ display: grid;
3
+ align-items: center;
4
+ grid-template-columns: 1fr auto;
5
+ row-gap: ${l.small};
6
+ padding: ${l.medium};
7
+ transition: background ${s.transitionMS};
8
+ > header {
9
+ display: flex;
10
+ align-items: center;
11
+ gap: ${l.small};
12
+ grid-column: span 2;
13
+ > p {
14
+ color: ${m.interactive.primary__resting.rgba};
15
+ font-weight: 500;
16
+ }
17
+ }
18
+ &:hover {
19
+ background: ${m.interactive.primary__hover_alt.rgba};
20
+ }
21
+ `,d=({onTutorialStart:s,onClose:l,id:c,name:d})=>{const{startTutorial:g,seenTutorialIDs:u}=n(),f=u.includes(c);return r(p,{onClick:()=>{g(c),s(c),l()},children:[f&&r("header",{children:[t(i,{data:o,size:16,color:m.interactive.primary__resting.rgba}),t(a,{varinat:"caption",children:"COMPLETED"})]}),t(a,{variant:"h4",children:d}),t(i,{data:e,color:m.interactive.primary__resting.rgba})]})};export{d as TutorialItem};
@@ -0,0 +1,6 @@
1
+ import { FC } from 'react';
2
+ interface TutorialsProps {
3
+ onTutorialStart: (tutorialId: string) => void;
4
+ }
5
+ export declare const Tutorials: FC<TutorialsProps>;
6
+ export {};
@@ -0,0 +1 @@
1
+ import{jsxs as r,Fragment as o,jsx as t}from"react/jsx-runtime";import{useState as e,useRef as i}from"react";import{Icon as n,Typography as a,Divider as l}from"@equinor/eds-core-react";import{youtube_alt as s}from"@equinor/eds-icons";import{useTutorials as c}from"@equinor/subsurface-app-management";import{TutorialItem as m}from"./TutorialItem.js";import{Container as p,TutorialList as h}from"./Tutorials.styles.js";import{TopBarButton as u}from"../TopBar.styles.js";import{TopBarMenu as d}from"../TopBarMenu.js";const f=({onTutorialStart:f})=>{const{allTutorials:g,tutorialsOnThisPage:T}=c(),[j,v]=e(!1),C=i(null),q=g.filter((r=>-1===T.findIndex((o=>o.id===r.id)))),x=()=>v((r=>!r));return r(o,{children:[t(u,{variant:"ghost_icon",ref:C,onClick:x,children:t(n,{data:s})}),j&&t(d,{open:!0,onClose:x,anchorEl:C.current,children:r(p,{children:[r(a,{variant:"h4",children:["Available Tutorials (",g.length,")"]}),T.length>0&&r(h,{children:[t(a,{variant:"caption",children:"For current page"}),T.map((r=>t(m,{onTutorialStart:f,onClose:x,...r},r.id)))]}),T.length>0&&q.length>0&&t(l,{}),q.length>0&&r(h,{children:[t(a,{variant:"caption",children:"For other pages"}),q.map((r=>t(m,{onTutorialStart:f,onClose:x,...r},r.id)))]})]})})]})};export{f as Tutorials};
@@ -0,0 +1,2 @@
1
+ export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
+ export declare const TutorialList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
@@ -0,0 +1,18 @@
1
+ import"../../../atoms/style/colors.js";import{spacings as o}from"../../../atoms/style/spacings.js";import t from"styled-components";const i=t.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ padding: ${o.large};
5
+ width: 520px;
6
+ > h4 {
7
+ margin-bottom: ${o.x_large};
8
+ }
9
+ > hr {
10
+ margin-bottom: ${o.x_large};
11
+ }
12
+ `,m=t.section`
13
+ display: flex;
14
+ flex-direction: column;
15
+ > p:first-child {
16
+ margin-bottom: ${o.medium_small};
17
+ }
18
+ `;export{i as Container,m as TutorialList};
@@ -4,6 +4,7 @@ import { FieldMenu } from './FieldMenu/FieldMenu';
4
4
  import { GuidelineSections } from './Guidelines/Guidelines';
5
5
  import { Notifications } from './Notifications/Notifications';
6
6
  import { Resources } from './Resources/Resources';
7
+ import { Tutorials } from './Tutorials/Tutorials';
7
8
  import { Actions } from './Actions';
8
9
  import { Guidelines } from './Guidelines';
9
10
  import { Settings, SettingsProps } from './Settings';
@@ -17,6 +18,7 @@ type TopBarType = typeof BaseTopBar & {
17
18
  FieldSelector: typeof FieldMenu;
18
19
  Resources: typeof Resources;
19
20
  ApplicationDrawer: typeof ApplicationDrawer;
21
+ Tutorials: typeof Tutorials;
20
22
  };
21
23
  export declare const TopBar: TopBarType;
22
24
  export type { GuidelineSections, SettingsProps, TopBarType };
@@ -1 +1 @@
1
- import{Account as o}from"./Account/Account.js";import{ApplicationDrawer as i}from"./ApplicationDrawer/ApplicationDrawer.js";import{FieldMenu as r}from"./FieldMenu/FieldMenu.js";import{Notifications as t}from"./Notifications/Notifications.js";import{Resources as s}from"./Resources/Resources.js";import{Actions as e}from"./Actions.js";import{Guidelines as c}from"./Guidelines/index.js";import{Settings as n}from"./Settings.js";import{TopBar as m}from"./TopBar.js";const p=m;p.Account=o,p.Actions=e,p.Guidelines=c,p.Settings=n,p.Notifications=t,p.FieldSelector=r,p.Resources=s,p.ApplicationDrawer=i;export{p as TopBar};
1
+ import{Account as o}from"./Account/Account.js";import{ApplicationDrawer as i}from"./ApplicationDrawer/ApplicationDrawer.js";import{FieldMenu as r}from"./FieldMenu/FieldMenu.js";import{Notifications as t}from"./Notifications/Notifications.js";import{Resources as s}from"./Resources/Resources.js";import{Tutorials as e}from"./Tutorials/Tutorials.js";import{Actions as m}from"./Actions.js";import{Guidelines as c}from"./Guidelines/index.js";import{Settings as n}from"./Settings.js";import{TopBar as p}from"./TopBar.js";const a=p;a.Account=o,a.Actions=m,a.Guidelines=c,a.Settings=n,a.Notifications=t,a.FieldSelector=r,a.Resources=s,a.ApplicationDrawer=i,a.Tutorials=e;export{a as TopBar};
@@ -15,5 +15,6 @@ export { TableOfContents } from './TableOfContents/TableOfContents';
15
15
  export type { TableOfContentsProps } from './TableOfContents/TableOfContents';
16
16
  export { Template } from './Template/Template';
17
17
  export type { ContentProps, TemplateType } from './Template/Template';
18
+ export { PageTitle } from './PageTitle/PageTitle';
18
19
  export { Card, } from '@equinor/eds-core-react';
19
20
  export type { CardProps } from '@equinor/eds-core-react';
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as e,useState as n,useMemo as r}from"react";import{MsalProvider as i}from"@azure/msal-react";import{AuthProviderInner as a}from"./AuthProviderInner.js";import{auth as c,environment as u}from"../../atoms/utils/auth_environment.js";const{msalApp:m}=c,{getIsMock:d,getMockUserPhoto:s,getMockRoles:l}=u,h=t(void 0),p=()=>{const o=e(h);if(void 0===o)throw new Error("useAuth must be used within a AuthContext provider");return o},v={homeAccountId:"mock-home-account-id",environment:"mock",tenantId:"mock-tenant-id",username:"MOCK@equinor.com",localAccountId:"mock-local-account-id",name:"Mock mocksnes",idToken:"fake",idTokenClaims:{id:"claim"},nativeAccountId:"accountid",authorityType:"authority",tenantProfiles:new Map},g=({children:t,loadingComponent:e,unauthorizedComponent:c,withoutLoader:u=!1})=>{const[p,g]=n(void 0),[k,C]=n(),[I,A]=n("loading"),[M,f]=n(),T=r((()=>d(import.meta.env.VITE_IS_MOCK)),[]),_=r((()=>s(import.meta.env.VITE_MOCK_USER_PHOTO)),[]),O=r((()=>l(import.meta.env.VITE_MOCK_ROLES)),[]);return T?("loading"===I&&setTimeout((()=>{A("authorized")}),1e3),o(h.Provider,{value:{roles:O,account:v,photo:_,logout:()=>console.log("Logged out the user!"),authState:I},children:t})):o(h.Provider,{value:{roles:k,account:p,photo:M,logout:()=>m.logoutRedirect(),authState:I},children:o(i,{instance:m,children:o(a,{loadingComponent:e,unauthorizedComponent:c,account:p,setAccount:g,setRoles:C,setPhoto:f,authState:I,setAuthState:A,withoutLoader:u,children:t})})})};export{g as AuthProvider,v as MOCK_USER,p as useAuth};
1
+ import{jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as e,useState as n,useMemo as r}from"react";import{MsalProvider as i}from"@azure/msal-react";import{AuthProviderInner as a}from"./AuthProviderInner.js";import{environment as c,auth as u}from"../../atoms/utils/auth_environment.js";const{msalApp:m}=u,{getIsMock:d,getMockUserPhoto:s,getMockRoles:l}=c,h=t(void 0),p=()=>{const o=e(h);if(void 0===o)throw new Error("useAuth must be used within a AuthContext provider");return o},v={homeAccountId:"mock-home-account-id",environment:"mock",tenantId:"mock-tenant-id",username:"MOCK@equinor.com",localAccountId:"mock-local-account-id",name:"Mock mocksnes",idToken:"fake",idTokenClaims:{id:"claim"},nativeAccountId:"accountid",authorityType:"authority",tenantProfiles:new Map},g=({children:t,loadingComponent:e,unauthorizedComponent:c,withoutLoader:u=!1})=>{const[p,g]=n(void 0),[k,C]=n(),[I,A]=n("loading"),[M,f]=n(),T=r((()=>d(import.meta.env.VITE_IS_MOCK)),[]),_=r((()=>s(import.meta.env.VITE_MOCK_USER_PHOTO)),[]),O=r((()=>l(import.meta.env.VITE_MOCK_ROLES)),[]);return T?("loading"===I&&setTimeout((()=>{A("authorized")}),1e3),o(h.Provider,{value:{roles:O,account:v,photo:_,logout:()=>console.log("Logged out the user!"),authState:I},children:t})):o(h.Provider,{value:{roles:k,account:p,photo:M,logout:()=>m.logoutRedirect(),authState:I},children:o(i,{instance:m,children:o(a,{loadingComponent:e,unauthorizedComponent:c,account:p,setAccount:g,setRoles:C,setPhoto:f,authState:I,setAuthState:A,withoutLoader:u,children:t})})})};export{g as AuthProvider,v as MOCK_USER,p as useAuth};
@@ -1 +1 @@
1
- import"react";import"../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../molecules/RichTextEditor/RichTextEditor.types.js";import"../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../atoms/enums/Environment.js";import"../atoms/utils/auth_environment.js";import"../organisms/TopBar/Notifications/NotificationProvider.js";import"./AuthProvider/AuthProvider.js";import"./ReleaseNotesProvider.js";import"./SideBarProvider.js";import"./SnackbarProvider/SnackbarProvider.js";import"./StepperProvider.js";import"./TableOfContentsProvider.js";import"./ThemeProvider/ThemeProvider.js";import"./TutorialStepsProvider.js";import"../atoms/style/colors.js";import"../atoms/enums/Errors.js";import"../atoms/enums/Theme.js";import"../atoms/enums/SpacingsMode.js";import"html2canvas";import"proj4";import{sortByDate as t}from"../atoms/utils/sort.js";const e=t=>{const e=[],r=t.filter((t=>t.createdDate)),o=r.map((t=>{const e=new Date(t.createdDate);return{date:e,year:e.getFullYear(),month:e.getMonth()}}));for(const t of r){const r=new Date(t.createdDate),a=r.toLocaleString("en-US",{year:"numeric"}),i=`year${r.toLocaleString("en-US",{year:"numeric"})}`;if(e.find((t=>t.value===i)))continue;const s=o.filter((t=>t.year===r.getFullYear())),n=[...new Map(s.map((t=>[t.month,t]))).values()];n.sort(((t,e)=>e.date.getTime()-t.date.getTime()));const m=n.map((t=>{const e=t.date.toLocaleString("en-US",{month:"long"});return{label:e,value:`${i}--${e}`}}));e.push({label:a,value:i,children:m})}return e.sort(((t,e)=>{const r=parseInt(t.label);return parseInt(e.label)-r})),e},r=t=>`year${t.getFullYear()}--${t.toLocaleDateString("en-GB",{month:"long"})}`,o=e=>e.sort(((e,r)=>t(e.createdDate,r.createdDate)));export{e as extractDatesFromReleaseNotes,r as monthValueToString,o as sortReleaseNotesByDate};
1
+ import"react";import"../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../molecules/RichTextEditor/RichTextEditor.types.js";import"../_virtual/lodash.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../atoms/enums/Environment.js";import"../atoms/utils/auth_environment.js";import"../organisms/TopBar/Notifications/NotificationProvider.js";import"./AuthProvider/AuthProvider.js";import"./ReleaseNotesProvider.js";import"./SideBarProvider.js";import"./SnackbarProvider/SnackbarProvider.js";import"./StepperProvider.js";import"./TableOfContentsProvider.js";import"./ThemeProvider/ThemeProvider.js";import"../atoms/style/colors.js";import"../atoms/enums/Errors.js";import"../atoms/enums/Theme.js";import"../atoms/enums/SpacingsMode.js";import"html2canvas";import"proj4";import{sortByDate as t}from"../atoms/utils/sort.js";const e=t=>{const e=[],r=t.filter((t=>t.createdDate)),o=r.map((t=>{const e=new Date(t.createdDate);return{date:e,year:e.getFullYear(),month:e.getMonth()}}));for(const t of r){const r=new Date(t.createdDate),a=r.toLocaleString("en-US",{year:"numeric"}),i=`year${r.toLocaleString("en-US",{year:"numeric"})}`;if(e.find((t=>t.value===i)))continue;const s=o.filter((t=>t.year===r.getFullYear())),n=[...new Map(s.map((t=>[t.month,t]))).values()];n.sort(((t,e)=>e.date.getTime()-t.date.getTime()));const m=n.map((t=>{const e=t.date.toLocaleString("en-US",{month:"long"});return{label:e,value:`${i}--${e}`}}));e.push({label:a,value:i,children:m})}return e.sort(((t,e)=>{const r=parseInt(t.label);return parseInt(e.label)-r})),e},r=t=>`year${t.getFullYear()}--${t.toLocaleDateString("en-GB",{month:"long"})}`,o=e=>e.sort(((e,r)=>t(e.createdDate,r.createdDate)));export{e as extractDatesFromReleaseNotes,r as monthValueToString,o as sortReleaseNotesByDate};
@@ -0,0 +1,6 @@
1
+ import { FC, ReactNode } from 'react';
2
+ interface APIErrorSnackbarProps {
3
+ children: ReactNode;
4
+ }
5
+ export declare const APIErrorSnackbar: FC<APIErrorSnackbarProps>;
6
+ export {};
@@ -0,0 +1 @@
1
+ import{useRef as r,useEffect as e}from"react";import{ApiError as t}from"@equinor/subsurface-app-management";import{useQueryClient as s}from"@tanstack/react-query";import{useSnackbar as o}from"./SnackbarProvider.js";const a=({children:a})=>{const n=s(),{showSnackbar:i}=o(),u=r(!1);return e((()=>{if(!u.current){u.current=!0;const r=n.getDefaultOptions();n.setDefaultOptions({...r,queries:{throwOnError:r=>{if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),i({text:`${r.status}: ${e}`,variant:"error"})}return!1}},mutations:{throwOnError:r=>{if(r instanceof t){let e=r.message;"userMessage"in r.body&&(e=r.body.userMessage),i({text:`${r.status}: ${e}`,variant:"error"})}return!1}}})}}),[n,i]),a};export{a as APIErrorSnackbar};
@@ -20,5 +20,10 @@ export interface State {
20
20
  export declare const useSnackbar: () => State;
21
21
  export type SnackbarProviderProps = {
22
22
  children: ReactNode;
23
+ showAPIErrors?: boolean;
23
24
  } & SnackbarProps;
25
+ /**
26
+ * @param children - Children to render under the SnackbarProvider
27
+ * @param showAPIErrors - Set default query options for showing API errors, defaults to true
28
+ */
24
29
  export declare const SnackbarProvider: FC<SnackbarProviderProps>;
@@ -1 +1 @@
1
- import{jsxs as r,jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as i,useState as e}from"react";import{Icon as n,Typography as a,Snackbar as d,Button as c}from"@equinor/eds-core-react";import{close as s}from"@equinor/eds-icons";import{StyledSnackbar as l}from"./SnackbarProvider.styles.js";import{snackbarIcon as m}from"./SnackbarProvider.utils.js";const v=t(void 0),h=()=>{const r=i(v);if(void 0===r)throw new Error("useSnackbar must be used within a SnackbarContextProvider");return r},u=t=>{const[i,h]=e(!1),[u,b]=e(void 0),[p,f]=e(t),[k,S]=e(),x=()=>{h(!1),p.onClose&&p.onClose()};return r(v.Provider,{value:{showSnackbar:(r,o)=>{b("string"==typeof r?{text:r,variant:"info"}:r),f(o?.customProps??t),S(o?.action??void 0),h(!0)},setActionDisabledState:r=>{S((o=>o?{...o,disabled:r}:o))},hideSnackbar:()=>h(!1)},children:[t.children,r(l,{$variant:u?.variant,open:i,onClose:x,autoHideDuration:p.autoHideDuration,placement:p.placement,children:[u&&o(n,{data:m(u.variant)}),o(a,{variant:"body_short",children:u?.text}),k&&o(d.Action,{children:o(c,{disabled:k.disabled,variant:"ghost",onClick:k.handler,children:k.text})}),o(c,{variant:"ghost_icon",onClick:x,children:o(n,{data:s})})]})]})};export{u as SnackbarProvider,h as useSnackbar};
1
+ import{jsxs as r,jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as i,useState as e}from"react";import{Icon as n,Typography as a,Snackbar as d,Button as s}from"@equinor/eds-core-react";import{close as c}from"@equinor/eds-icons";import{APIErrorSnackbar as l}from"./APIErrorSnackbar.js";import{StyledSnackbar as m}from"./SnackbarProvider.styles.js";import{snackbarIcon as h}from"./SnackbarProvider.utils.js";const v=t(void 0),u=()=>{const r=i(v);if(void 0===r)throw new Error("useSnackbar must be used within a SnackbarContextProvider");return r},b=({children:t,showAPIErrors:i=!0,...u})=>{const[b,p]=e(!1),[f,k]=e(void 0),[S,P]=e(u),[x,C]=e(),w=()=>{p(!1),S.onClose&&S.onClose()};return r(v.Provider,{value:{showSnackbar:(r,o)=>{k("string"==typeof r?{text:r,variant:"info"}:r),P(o?.customProps??u),C(o?.action??void 0),p(!0)},setActionDisabledState:r=>{C((o=>o?{...o,disabled:r}:o))},hideSnackbar:()=>p(!1)},children:[i?o(l,{children:t}):t,r(m,{$variant:f?.variant,open:b,onClose:w,autoHideDuration:S.autoHideDuration,placement:S.placement,children:[f&&o(n,{data:h(f.variant)}),o(a,{variant:"body_short",children:f?.text}),x&&o(d.Action,{children:o(s,{disabled:x.disabled,variant:"ghost",onClick:x.handler,children:x.text})}),o(s,{variant:"ghost_icon",onClick:w,children:o(n,{data:c})})]})]})};export{b as SnackbarProvider,u as useSnackbar};
@@ -27,9 +27,20 @@ interface StepperContextType {
27
27
  export declare const StepperContext: import("react").Context<StepperContextType | undefined>;
28
28
  export declare function useStepper(): StepperContextType;
29
29
  export interface StepperProviderProps {
30
- initialStep?: number;
31
30
  steps: [Step, Step, ...Step[]];
32
31
  children: ReactNode;
33
32
  }
34
- export declare const StepperProvider: FC<StepperProviderProps>;
33
+ interface StepperProviderSyncedToURLParamProps extends StepperProviderProps {
34
+ syncToURLParam: true;
35
+ }
36
+ interface StepperProviderWithoutSyncToURLParamProps extends StepperProviderProps {
37
+ syncToURLParam?: undefined;
38
+ initialStep?: number;
39
+ }
40
+ /**
41
+ * @param steps - Which steps the stepper should have
42
+ * @param syncToURLParam - Assumes step param is at end of path, syncs current step to the URL param
43
+ * @param initialStep - Initial step to start the stepper at, can't be set if you use syncToURLParam
44
+ */
45
+ export declare const StepperProvider: FC<StepperProviderSyncedToURLParamProps | StepperProviderWithoutSyncToURLParamProps>;
35
46
  export {};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{createContext as e,useContext as r,useState as s}from"react";const n=e(void 0);function i(){const t=r(n);if(!t)throw new Error("useStepper must be used within a StepperProvider");return t}const p=({initialStep:e=0,steps:r,children:i})=>{const[p,o]=s(e),[u,S]=s(0);if(e>=r.length||e<0)throw new Error("initialStep must be a valid index of the steps array");return t(n.Provider,{value:{steps:r,currentStep:p,currentSubStep:u,setCurrentStep:o,goToNextStep:()=>{"subSteps"in r[p]&&r[p].subSteps&&u<r[p].subSteps.length-1?S((t=>t+1)):p!==r.length-1&&(o((t=>t+1)),0!==u&&S(0))},goToPreviousStep:()=>{if(u>0&&"subSteps"in r[p]&&r[p].subSteps&&r[p].subSteps.length>0)return void S((t=>t-1));if(0===p)return;o((t=>t-1));const t=r.at(p-1);t&&"subSteps"in t&&t.subSteps&&S(t.subSteps.length-1)}},children:i})};export{n as StepperContext,p as StepperProvider,i as useStepper};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as t,useState as r,useContext as s}from"react";import{useParams as n,useNavigate as o,useLocation as i}from"react-router";const p=t(void 0);function u(){const e=s(p);if(!e)throw new Error("useStepper must be used within a StepperProvider");return e}const a=({steps:t,children:s,...u})=>{const{step:a}=n(),c=o(),m=i().pathname.replace(`/${a}`,""),S=u.syncToURLParam?Number(a):u?.initialStep??0;if(u.syncToURLParam&&a&&isNaN(Number(a)))throw new Error('Step URL param must be a valid number when using "syncToURLParam"');const[b,h]=r(S),l=u.syncToURLParam?Number(a):b,[d,f]=r(0);if(S>=t.length||S<0)throw new Error("initialStep must be a valid index of the steps array");const g=e=>{u.syncToURLParam?c(`${m}/${e}`):h(e)};return e(p.Provider,{value:{steps:t,currentStep:l,currentSubStep:d,setCurrentStep:g,goToNextStep:()=>{"subSteps"in t[l]&&t[l].subSteps&&d<t[l].subSteps.length-1?f((e=>e+1)):l!==t.length-1&&(g(l+1),0!==d&&f(0))},goToPreviousStep:()=>{if(d>0&&"subSteps"in t[l]&&t[l].subSteps&&t[l].subSteps.length>0)return void f((e=>e-1));if(0===l)return;g(l-1);const e=t.at(l-1);e&&"subSteps"in e&&e.subSteps&&f(e.subSteps.length-1)}},children:s})};export{p as StepperContext,a as StepperProvider,u as useStepper};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as t,useContext as r,useState as n,useMemo as o,useEffect as i,useCallback as s,useRef as l}from"react";import{useNavigate as c,useLocation as u}from"react-router";import{useOnScreenMultiple as a}from"../atoms/hooks/useOnScreenMultiple.js";import{getValues as m}from"./TableOfContentsProvider.utils.js";const d=t(void 0);function f(){const e=r(d);if(void 0===e)throw new Error("'useTableOfContents' must be used within provider");return e}const h=({items:t,children:r,hashNavigation:f})=>{const h=c(),{hash:p}=u(),[v,g]=n(t[0]?.value),[b,w]=n([]),[I,O]=n(""!==p),j=o((()=>t.flatMap((e=>m([],e)))),[t]);i((()=>{w(j.map((e=>document.getElementById(e))))}),[j]);const x=s((e=>{if(e.value===v)return!0;if(e.children&&v){return m([],e).includes(v)}return!1}),[v]),A=a(b),C=l(-1),M=s(((e,t)=>{const r=j.findIndex((t=>t===e)),n=b[r];if(n){const e=t?.shouldInstantlyJumpOnMount&&I?"instant":t?.behavior??"smooth";n.scrollIntoView({block:"start",behavior:e}),C.current=r;let o=1/0,i=0;const s=()=>{const e=n?.getBoundingClientRect().top;if(e===o){if(i+=1,i>1)return g(j[r]),f&&(h(`#${j[r]}`,{replace:!0}),O(!1)),void(C.current=-1)}else i=0,o=e;requestAnimationFrame(s)};requestAnimationFrame(s)}}),[b,f,h,I,j]);return i((()=>{if(0===A.length||A.length!==j.length||-1!==C.current)return;let e=-1;for(let t=A.length-1;t>=0;t--)A[t]&&(e=t);-1!==e&&void 0!==j.at(e)&&(g(j[e]),f&&h(`#${j[e]}`,{replace:!0}))}),[f,h,j,A]),e(d.Provider,{value:{items:t,selected:v,setSelected:M,isActive:x},children:r})};export{h as TableOfContentsProvider,f as useTableOfContents};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as t,useState as r,useMemo as n,useEffect as o,useCallback as i,useRef as s,useContext as l}from"react";import{useNavigate as c,useLocation as u}from"react-router";import{useOnScreenMultiple as a}from"../atoms/hooks/useOnScreenMultiple.js";import{getValues as m}from"./TableOfContentsProvider.utils.js";const d=t(void 0);function f(){const e=l(d);if(void 0===e)throw new Error("'useTableOfContents' must be used within provider");return e}const h=({items:t,children:l,hashNavigation:f})=>{const h=c(),{hash:p}=u(),[v,g]=r(t[0]?.value),[b,w]=r([]),[I,O]=r(""!==p),j=n((()=>t.flatMap((e=>m([],e)))),[t]);o((()=>{w(j.map((e=>document.getElementById(e))))}),[j]);const x=i((e=>{if(e.value===v)return!0;if(e.children&&v){return m([],e).includes(v)}return!1}),[v]),A=a(b),C=s(-1),M=i(((e,t)=>{const r=j.findIndex((t=>t===e)),n=b[r];if(n){const e=t?.shouldInstantlyJumpOnMount&&I?"instant":t?.behavior??"smooth";n.scrollIntoView({block:"start",behavior:e}),C.current=r;let o=1/0,i=0;const s=()=>{const e=n?.getBoundingClientRect().top;if(e===o){if(i+=1,i>1)return g(j[r]),f&&(h(`#${j[r]}`,{replace:!0}),O(!1)),void(C.current=-1)}else i=0,o=e;requestAnimationFrame(s)};requestAnimationFrame(s)}}),[b,f,h,I,j]);return o((()=>{if(0===A.length||A.length!==j.length||-1!==C.current)return;let e=-1;for(let t=A.length-1;t>=0;t--)A[t]&&(e=t);-1!==e&&void 0!==j.at(e)&&(g(j[e]),f&&h(`#${j[e]}`,{replace:!0}))}),[f,h,j,A]),e(d.Provider,{value:{items:t,selected:v,setSelected:M,isActive:x},children:l})};export{h as TableOfContentsProvider,f as useTableOfContents};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{createContext as o,useContext as t,useEffect as e}from"react";import{THEME_LOCALSTORAGE_KEY as i}from"./ThemeProvider.constants.js";import"../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../molecules/RichTextEditor/RichTextEditor.types.js";import{useLocalStorage as s}from"../../atoms/hooks/useLocalStorage.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../atoms/enums/Environment.js";import"../../atoms/utils/auth_environment.js";import"../../organisms/TopBar/Notifications/NotificationProvider.js";import"../AuthProvider/AuthProvider.js";import"../ReleaseNotesProvider.js";import"../SideBarProvider.js";import"../SnackbarProvider/SnackbarProvider.js";import"../StepperProvider.js";import"../TableOfContentsProvider.js";import"../TutorialStepsProvider.js";import"../../atoms/style/colors.js";import"../../atoms/enums/Errors.js";import{Theme as m}from"../../atoms/enums/Theme.js";import"../../atoms/enums/SpacingsMode.js";import"html2canvas";import"proj4";const n=o(void 0);function a(){const r=t(n);if(void 0===r)throw new Error("ThemeProvider must be used within Provider");return r}const p=({children:o})=>{const[t,a]=s(i,m.LIGHT);e((()=>{document.documentElement.setAttribute("data-theme",t)}),[t]);return r(n.Provider,{value:{theme:t,setTheme:r=>{a(r)}},children:o})};export{p as ThemeProvider,n as ThemeProviderContext,a as useThemeProvider};
1
+ import{jsx as r}from"react/jsx-runtime";import{createContext as o,useEffect as t,useContext as e}from"react";import{THEME_LOCALSTORAGE_KEY as i}from"./ThemeProvider.constants.js";import"../../molecules/RichTextEditor/custom-extensions/AmplifyKit.js";import"../../molecules/RichTextEditor/RichTextEditor.types.js";import{useLocalStorage as s}from"../../atoms/hooks/useLocalStorage.js";import"@equinor/subsurface-app-management";import"@microsoft/signalr";import"@tanstack/react-query";import"../../atoms/enums/Environment.js";import"../../atoms/utils/auth_environment.js";import"../../organisms/TopBar/Notifications/NotificationProvider.js";import"../AuthProvider/AuthProvider.js";import"../ReleaseNotesProvider.js";import"../SideBarProvider.js";import"../SnackbarProvider/SnackbarProvider.js";import"../StepperProvider.js";import"../TableOfContentsProvider.js";import"../../atoms/style/colors.js";import"../../atoms/enums/Errors.js";import{Theme as m}from"../../atoms/enums/Theme.js";import"../../atoms/enums/SpacingsMode.js";import"html2canvas";import"proj4";const n=o(void 0);function a(){const r=e(n);if(void 0===r)throw new Error("ThemeProvider must be used within Provider");return r}const p=({children:o})=>{const[e,a]=s(i,m.LIGHT);t((()=>{document.documentElement.setAttribute("data-theme",e)}),[e]);return r(n.Provider,{value:{theme:e,setTheme:r=>{a(r)}},children:o})};export{p as ThemeProvider,n as ThemeProviderContext,a as useThemeProvider};
@@ -0,0 +1,2 @@
1
+ import { MotionProps } from 'framer-motion';
2
+ export declare const TUTORIAL_HIGHLIGHT_ANIMATION_PROPS: MotionProps;
@@ -0,0 +1 @@
1
+ const i={initial:{opacity:0},animate:{opacity:1},transition:{delay:.5,duration:.5}};export{i as TUTORIAL_HIGHLIGHT_ANIMATION_PROPS};
@@ -0,0 +1,11 @@
1
+ import { FC, ReactElement } from 'react';
2
+ interface TutorialHighlightingContextType {
3
+ customStepContent: Record<string, ReactElement>;
4
+ }
5
+ export declare function useTutorialHighlighting(): TutorialHighlightingContextType;
6
+ interface TutorialHighlightingProviderProps {
7
+ children: ReactElement | ReactElement[];
8
+ customStepContent?: Record<string, ReactElement>;
9
+ }
10
+ export declare const TutorialHighlightingProvider: FC<TutorialHighlightingProviderProps>;
11
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{createContext as t,useContext as i}from"react";import{TutorialProvider as o}from"@equinor/subsurface-app-management";import{TutorialHighlightingProviderInner as e}from"./TutorialHighlightingProviderInner.js";const n=t(void 0);function u(){const r=i(n);if(!r)throw new Error("useTutorialHighlighting must be used within a TutorialHighlightingProvider");return r}const m=({children:t,customStepContent:i})=>r(n.Provider,{value:{customStepContent:i??{}},children:r(o,{children:r(e,{children:t})})});export{m as TutorialHighlightingProvider,u as useTutorialHighlighting};
@@ -0,0 +1,6 @@
1
+ import { FC, ReactElement } from 'react';
2
+ interface TutorialHighlightingProviderInnerProps {
3
+ children: ReactElement | ReactElement[];
4
+ }
5
+ export declare const TutorialHighlightingProviderInner: FC<TutorialHighlightingProviderInnerProps>;
6
+ export {};
@@ -0,0 +1,24 @@
1
+ import{jsxs as t,Fragment as i,jsx as e}from"react/jsx-runtime";import{useMemo as r}from"react";import{useTutorials as o}from"@equinor/subsurface-app-management";import{useReversedScrollY as n}from"./hooks/useReversedScrollY.js";import{TutorialPopover as s}from"./TutorialPopover/TutorialPopover.js";import{TUTORIAL_HIGHLIGHT_ANIMATION_PROPS as l}from"./TutorialHighlightingProvider.constants.js";import"../../atoms/style/colors.js";import{spacings as a}from"../../atoms/style/spacings.js";import{getHighlightElementBoundingBox as h}from"../../atoms/utils/tutorials.js";import{motion as d}from"framer-motion";import m from"styled-components";const p=m.svg`
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ height: 100vh;
6
+ width: 100vw;
7
+ z-index: 9999999;
8
+ background: none;
9
+ pointer-events: none;
10
+ `,c=m.div`
11
+ position: fixed;
12
+ top: 0;
13
+ left: 0;
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: ${a.medium};
17
+ z-index: 99999999;
18
+ justify-content: center;
19
+ align-items: center;
20
+ width: 100vw;
21
+ height: 100vh;
22
+ background: none;
23
+ pointer-events: none;
24
+ `,g=({children:a})=>{const{activeTutorial:m,activeStep:g,unseenTutorialsOnThisPage:f}=o(),u=n(),v=m?[m]:f,$=r((()=>{if(m&&void 0!==g){if(!m.steps[g].highlightElement)return[];const t=h(m.id,g);return t?[t]:[]}return f.map((t=>{if(t.steps.at(0)?.highlightElement)return h(t.id,0)})).filter((t=>void 0!==t))}),[g,m,f]);return v.length>0?t(i,{children:[a,e(c,{children:v.map((t=>{const i=$.find((i=>i.id===t.id));return e(s,{isHighlighting:$.length>0,...t,...i},t.id)}))}),t(p,{children:[t("mask",{id:"tutorials-rectangles",children:[e("rect",{width:"100%",height:"100%",fill:"white"}),e(d.g,{style:{translateY:u},children:$.map((t=>e(d.path,{"data-testid":`tutorial-mask-${t.id}`,initial:{opacity:0,d:`M ${t.left} ${t.top} h ${t.width} v ${t.height} h -${t.width} Z`},animate:{opacity:1,d:`M ${t.left} ${t.top} h ${t.width} v ${t.height} h -${t.width} Z`},fill:"black"},t.id)))})]}),e(d.rect,{width:"100%",height:"100%",fill:"rgba(111, 111, 111, 0.35)",mask:"url(#tutorials-rectangles)",...l})]})]}):e(i,{children:a})};export{g as TutorialHighlightingProviderInner};
@@ -0,0 +1,6 @@
1
+ import { FC } from 'react';
2
+ interface StepIndicatorProps {
3
+ stepAmount: number;
4
+ }
5
+ export declare const StepIndicator: FC<StepIndicatorProps>;
6
+ export {};
@@ -0,0 +1,20 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{useTutorials as r}from"@equinor/subsurface-app-management";import{shape as e}from"../../../atoms/style/index.js";import o from"styled-components";import{spacings as i}from"../../../atoms/style/spacings.js";import{colors as a}from"../../../atoms/style/colors.js";import{animation as n}from"../../../atoms/style/animation.js";const s=o.div`
2
+ display: grid;
3
+ gap: ${i.x_small};
4
+ `,m=o.span`
5
+ overflow: hidden;
6
+ height: 4px;
7
+ width: 100%;
8
+ background: ${a.infographic.primary__moss_green_34.rgba};
9
+ border-radius: ${e.rounded.borderRadius};
10
+ position: relative;
11
+ &:after {
12
+ content: '';
13
+ position: absolute;
14
+ background: ${a.interactive.primary__resting.rgba};
15
+ width: 100%;
16
+ height: 100%;
17
+ transition: left ${n.transitionMS};
18
+ left: calc(${({$index:t,$activeIndex:r})=>100*(r-t)}%);
19
+ }
20
+ `,p=({stepAmount:e})=>{const{activeStep:o}=r();return t(s,{style:{gridTemplateColumns:`repeat(${e}, 1fr)`},children:Array.from({length:e}).map(((r,e)=>t(m,{$index:e,$activeIndex:o},e)))})};export{p as StepIndicator};
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import { MyTutorialDto } from '@equinor/subsurface-app-management';
3
+ interface TutorialPopoverProps extends MyTutorialDto {
4
+ isHighlighting: boolean;
5
+ top?: number;
6
+ left?: number;
7
+ width?: number;
8
+ height?: number;
9
+ }
10
+ export declare const TutorialPopover: FC<TutorialPopoverProps>;
11
+ export {};
@@ -0,0 +1,45 @@
1
+ import{jsxs as t,jsx as i,Fragment as o}from"react/jsx-runtime";import{Card as r,Icon as e,Typography as n,Button as a}from"@equinor/eds-core-react";import{info_circle as l}from"@equinor/eds-icons";import{useTutorials as s,useTutorialStepImage as d}from"@equinor/subsurface-app-management";import{useTutorialHighlighting as m}from"../TutorialHighlightingProvider.js";import{TUTORIAL_HIGHLIGHT_ANIMATION_PROPS as h}from"../TutorialHighlightingProvider.constants.js";import{StepIndicator as c}from"./StepIndicator.js";import{elevation as p}from"../../../atoms/style/index.js";import{useReversedScrollY as g}from"../hooks/useReversedScrollY.js";import{motion as u,useTransform as f}from"framer-motion";import v,{css as b}from"styled-components";import{spacings as x}from"../../../atoms/style/spacings.js";import{colors as y}from"../../../atoms/style/colors.js";const $=v(u(r))`
2
+ width: 360px;
3
+ padding: ${x.medium};
4
+ background: ${y.infographic.primary__moss_green_13.rgba};
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: ${x.medium};
8
+ transition:
9
+ top 400ms,
10
+ left 400ms;
11
+ box-shadow: ${p.raised};
12
+ pointer-events: auto;
13
+ > header {
14
+ display: flex;
15
+ gap: ${x.small};
16
+ align-items: center;
17
+ }
18
+ > img {
19
+ max-height: 170px;
20
+ object-fit: contain;
21
+ }
22
+ ${({$highlightingElement:t})=>t&&b`
23
+ transform: translateX(-50%);
24
+ &:before {
25
+ z-index: -1;
26
+ content: '';
27
+ width: 32px;
28
+ height: 26px;
29
+ background: ${y.infographic.primary__moss_green_13.rgba};
30
+ position: absolute;
31
+ top: 0;
32
+ left: 50%;
33
+ transform: translate(-50%, 0) rotate(45deg);
34
+ }
35
+ `}
36
+ `,_=v.div`
37
+ display: flex;
38
+ justify-content: flex-end;
39
+ gap: ${x.small};
40
+ &:has(> :last-child:nth-child(3)) {
41
+ > button:first-child {
42
+ margin-right: auto;
43
+ }
44
+ }
45
+ `,k=({isHighlighting:r,id:p,top:u,left:v,width:b,height:x,name:k,steps:j})=>{const{customStepContent:C}=m(),{activeTutorial:S,activeStep:T,skipTutorial:w,startTutorial:E,goToNextStep:H,goToPreviousStep:P}=s(),{data:q}=d(S?.steps.at(T)?.imgUrl??void 0),I=g(),D=u&&x?u+x+16:void 0,N=v&&b?v+b/2:void 0,z=!!D&&!!N,A=f(I,(t=>z?t+D:null)),B=()=>{w(p)},F=()=>{E(p)};if(void 0!==T&&j[T].custom&&!C[j[T].id])throw new Error(`[TutorialHighlightingProvider]: Custom step content not found, tutorial ID: ${p}, step ID: ${j[T].id}`);return!z&&r?null:t($,S&&void 0!==T?{style:{position:z?"absolute":void 0,top:A,left:N},$highlightingElement:z,...h,children:[j[T].custom?C[j[T].id]:t(o,{children:[t("header",{children:[i(e,{data:l,color:y.interactive.primary__resting.rgba}),i(n,{variant:"h6",children:j[T]?.title})]}),i(n,{variant:"body_short",children:j[T]?.body}),q?i("img",{src:q,alt:j[T].title}):null]}),t(_,{children:[i(a,{variant:"outlined",disabled:0===T,onClick:P,children:"Back"}),i(a,{variant:"ghost",onClick:B,children:"Cancel"}),i(a,{onClick:H,children:T===j.length-1?"Finish":"Next"})]}),i(c,{stepAmount:j.length})]}:{style:{position:z?"absolute":void 0,top:A,left:N},$highlightingElement:z,...h,children:[t("header",{children:[i(e,{data:l,color:y.interactive.primary__resting.rgba}),i(n,{variant:"h6",children:k})]}),t(_,{children:[i(a,{variant:"ghost",onClick:B,children:"Skip"}),i(a,{onClick:F,children:"Start tour"})]})]})};export{k as TutorialPopover};
@@ -0,0 +1 @@
1
+ export declare function useReversedScrollY(): import("framer-motion").MotionValue<number>;
@@ -0,0 +1 @@
1
+ import{useScroll as t,useTransform as n}from"framer-motion";function o(){const{scrollY:o}=t({container:{current:document.getElementById("content")}});return n(o,(t=>t>0?-1*t:0))}export{o as useReversedScrollY};
@@ -3,7 +3,7 @@ export { SideBarProvider } from './SideBarProvider';
3
3
  export { SnackbarProvider } from './SnackbarProvider/SnackbarProvider';
4
4
  export { TableOfContentsProvider } from './TableOfContentsProvider';
5
5
  export { ReleaseNotesProvider } from './ReleaseNotesProvider';
6
- export { TutorialStepsProvider } from './TutorialStepsProvider';
6
+ export { TutorialHighlightingProvider } from './TutorialHighlightingProvider/TutorialHighlightingProvider';
7
7
  export { LoadingProvider } from './LoadingProvider';
8
8
  export { ThemeProvider } from './ThemeProvider/ThemeProvider';
9
9
  export { StepperProvider } from './StepperProvider';
@@ -1,8 +1,12 @@
1
- import { AmplifyApplication, ImpersonateUserDto, MyFeatureDto, ReleaseNote } from '@equinor/subsurface-app-management';
1
+ import { AmplifyApplication, ImpersonateUserDto, MyFeatureDto, MyTutorialDto, ReleaseNote } from '@equinor/subsurface-app-management';
2
2
  import { GraphAppRole } from '@equinor/subsurface-app-management/dist/api/models/GraphAppRole';
3
3
  export declare const fakeReleaseNotes: ReleaseNote[];
4
4
  export declare const FAKE_ROLES: GraphAppRole[];
5
5
  export declare const fakeImpersonateUsers: ImpersonateUserDto[];
6
+ export declare function fakeTutorial(id: string, willPopUp: boolean, highlightElement: boolean, path?: string): MyTutorialDto;
7
+ export declare const FAKE_TUTORIALS: MyTutorialDto[];
6
8
  export declare const FAKE_APPS: AmplifyApplication[];
7
9
  export declare const FAKE_FEATURE_TOGGLES: MyFeatureDto[];
10
+ export declare const tokenHandler: import("msw").HttpHandler;
11
+ export declare const getTutorialImageHandler: import("msw").HttpHandler;
8
12
  export declare const handlers: import("msw").HttpHandler[];