@veracity/vui 1.5.0 → 1.6.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 (231) hide show
  1. package/dist/cjs/core/vuiProvider/globalStyle.d.ts +1 -1
  2. package/dist/cjs/core/vuiProvider/globalStyle.d.ts.map +1 -1
  3. package/dist/cjs/core/vuiProvider/index.d.ts +1 -0
  4. package/dist/cjs/core/vuiProvider/index.d.ts.map +1 -1
  5. package/dist/cjs/core/vuiProvider/index.js +1 -0
  6. package/dist/cjs/core/vuiProvider/notifyOffline.d.ts +4 -0
  7. package/dist/cjs/core/vuiProvider/notifyOffline.d.ts.map +1 -0
  8. package/dist/cjs/core/vuiProvider/notifyOffline.js +43 -0
  9. package/dist/cjs/core/vuiProvider/resetCSS.d.ts +1 -1
  10. package/dist/cjs/core/vuiProvider/resetCSS.d.ts.map +1 -1
  11. package/dist/cjs/core/vuiProvider/useOfflineMode.d.ts +4 -0
  12. package/dist/cjs/core/vuiProvider/useOfflineMode.d.ts.map +1 -0
  13. package/dist/cjs/core/vuiProvider/useOfflineMode.js +19 -0
  14. package/dist/cjs/core/vuiProvider/vuiProvider.d.ts +2 -0
  15. package/dist/cjs/core/vuiProvider/vuiProvider.d.ts.map +1 -1
  16. package/dist/cjs/core/vuiProvider/vuiProvider.js +3 -1
  17. package/dist/cjs/icons/baseIcons/cul/culAutoSave.d.ts +4 -0
  18. package/dist/cjs/icons/baseIcons/cul/culAutoSave.d.ts.map +1 -0
  19. package/dist/cjs/icons/baseIcons/cul/culAutoSave.js +7 -0
  20. package/dist/cjs/icons/baseIcons/fal/falArrowsLeftRight.d.ts +4 -0
  21. package/dist/cjs/icons/baseIcons/fal/falArrowsLeftRight.d.ts.map +1 -0
  22. package/dist/cjs/icons/baseIcons/fal/falArrowsLeftRight.js +7 -0
  23. package/dist/cjs/icons/baseIcons/fal/falArrowsUpDown.d.ts +4 -0
  24. package/dist/cjs/icons/baseIcons/fal/falArrowsUpDown.d.ts.map +1 -0
  25. package/dist/cjs/icons/baseIcons/fal/falArrowsUpDown.js +7 -0
  26. package/dist/cjs/icons/baseIcons/fal/falBalanceScale.d.ts +4 -0
  27. package/dist/cjs/icons/baseIcons/fal/falBalanceScale.d.ts.map +1 -0
  28. package/dist/cjs/icons/baseIcons/fal/falBalanceScale.js +7 -0
  29. package/dist/cjs/icons/baseIcons/fal/falCodeBranch.d.ts +4 -0
  30. package/dist/cjs/icons/baseIcons/fal/falCodeBranch.d.ts.map +1 -0
  31. package/dist/cjs/icons/baseIcons/fal/falCodeBranch.js +7 -0
  32. package/dist/cjs/icons/baseIcons/fal/falCodeCommit.d.ts +4 -0
  33. package/dist/cjs/icons/baseIcons/fal/falCodeCommit.d.ts.map +1 -0
  34. package/dist/cjs/icons/baseIcons/fal/falCodeCommit.js +7 -0
  35. package/dist/cjs/icons/baseIcons/fal/falCodeMerge.d.ts +4 -0
  36. package/dist/cjs/icons/baseIcons/fal/falCodeMerge.d.ts.map +1 -0
  37. package/dist/cjs/icons/baseIcons/fal/falCodeMerge.js +7 -0
  38. package/dist/cjs/icons/baseIcons/fal/falFileExclamation.d.ts +4 -0
  39. package/dist/cjs/icons/baseIcons/fal/falFileExclamation.d.ts.map +1 -0
  40. package/dist/cjs/icons/baseIcons/fal/falFileExclamation.js +7 -0
  41. package/dist/cjs/icons/baseIcons/fal/falPencilRuler.d.ts +4 -0
  42. package/dist/cjs/icons/baseIcons/fal/falPencilRuler.d.ts.map +1 -0
  43. package/dist/cjs/icons/baseIcons/fal/falPencilRuler.js +7 -0
  44. package/dist/cjs/icons/baseIcons/fal/falProjectDiagram.d.ts +4 -0
  45. package/dist/cjs/icons/baseIcons/fal/falProjectDiagram.d.ts.map +1 -0
  46. package/dist/cjs/icons/baseIcons/fal/falProjectDiagram.js +7 -0
  47. package/dist/cjs/icons/baseIcons/fal/falRuler.d.ts +4 -0
  48. package/dist/cjs/icons/baseIcons/fal/falRuler.d.ts.map +1 -0
  49. package/dist/cjs/icons/baseIcons/fal/falRuler.js +7 -0
  50. package/dist/cjs/icons/baseIcons/fas/fasGripDotsVertical.d.ts +4 -0
  51. package/dist/cjs/icons/baseIcons/fas/fasGripDotsVertical.d.ts.map +1 -0
  52. package/dist/cjs/icons/baseIcons/fas/fasGripDotsVertical.js +7 -0
  53. package/dist/cjs/icons/baseIcons/fas/fasLayerGroup.d.ts +4 -0
  54. package/dist/cjs/icons/baseIcons/fas/fasLayerGroup.d.ts.map +1 -0
  55. package/dist/cjs/icons/baseIcons/fas/fasLayerGroup.js +7 -0
  56. package/dist/cjs/icons/baseIcons/fas/fasMousePointer.d.ts +4 -0
  57. package/dist/cjs/icons/baseIcons/fas/fasMousePointer.d.ts.map +1 -0
  58. package/dist/cjs/icons/baseIcons/fas/fasMousePointer.js +7 -0
  59. package/dist/cjs/icons/baseIcons/fas/fasShield.d.ts +4 -0
  60. package/dist/cjs/icons/baseIcons/fas/fasShield.d.ts.map +1 -0
  61. package/dist/cjs/icons/baseIcons/fas/fasShield.js +7 -0
  62. package/dist/cjs/icons/baseIcons/icons.d.ts +15 -0
  63. package/dist/cjs/icons/baseIcons/icons.d.ts.map +1 -1
  64. package/dist/cjs/icons/baseIcons/icons.js +37 -7
  65. package/dist/cjs/icons/baseIcons/types.d.ts +1 -1
  66. package/dist/cjs/icons/baseIcons/types.d.ts.map +1 -1
  67. package/dist/cjs/index.d.ts +1 -0
  68. package/dist/cjs/index.d.ts.map +1 -1
  69. package/dist/cjs/index.js +1 -0
  70. package/dist/cjs/select/theme.d.ts +8 -0
  71. package/dist/cjs/select/theme.d.ts.map +1 -1
  72. package/dist/cjs/select/theme.js +8 -0
  73. package/dist/cjs/tabs/useTabsState.d.ts +1 -1
  74. package/dist/cjs/tabs/useTabsState.d.ts.map +1 -1
  75. package/dist/cjs/theme/components.d.ts +8 -0
  76. package/dist/cjs/theme/components.d.ts.map +1 -1
  77. package/dist/cjs/theme/defaultTheme.d.ts +8 -0
  78. package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
  79. package/dist/cjs/toast/useToast.d.ts +1 -1
  80. package/dist/cjs/toast/useToast.d.ts.map +1 -1
  81. package/dist/cjs/tutorial/index.d.ts +6 -0
  82. package/dist/cjs/tutorial/index.d.ts.map +1 -0
  83. package/dist/cjs/tutorial/index.js +21 -0
  84. package/dist/cjs/tutorial/tutorial.d.ts +4 -0
  85. package/dist/cjs/tutorial/tutorial.d.ts.map +1 -0
  86. package/dist/cjs/tutorial/tutorial.js +32 -0
  87. package/dist/cjs/tutorial/tutorial.types.d.ts +64 -0
  88. package/dist/cjs/tutorial/tutorial.types.d.ts.map +1 -0
  89. package/dist/cjs/tutorial/tutorial.types.js +2 -0
  90. package/dist/cjs/tutorial/tutorialCard.d.ts +3 -0
  91. package/dist/cjs/tutorial/tutorialCard.d.ts.map +1 -0
  92. package/dist/cjs/tutorial/tutorialCard.js +65 -0
  93. package/dist/cjs/tutorial/tutorialStep.d.ts +3 -0
  94. package/dist/cjs/tutorial/tutorialStep.d.ts.map +1 -0
  95. package/dist/cjs/tutorial/tutorialStep.js +14 -0
  96. package/dist/cjs/tutorial/useTutorial.d.ts +8 -0
  97. package/dist/cjs/tutorial/useTutorial.d.ts.map +1 -0
  98. package/dist/cjs/tutorial/useTutorial.js +14 -0
  99. package/dist/cjs/utils/uid.d.ts +1 -1
  100. package/dist/cjs/utils/uid.d.ts.map +1 -1
  101. package/dist/esm/core/vuiProvider/globalStyle.d.ts +1 -1
  102. package/dist/esm/core/vuiProvider/globalStyle.d.ts.map +1 -1
  103. package/dist/esm/core/vuiProvider/index.d.ts +1 -0
  104. package/dist/esm/core/vuiProvider/index.d.ts.map +1 -1
  105. package/dist/esm/core/vuiProvider/index.js +1 -0
  106. package/dist/esm/core/vuiProvider/notifyOffline.d.ts +4 -0
  107. package/dist/esm/core/vuiProvider/notifyOffline.d.ts.map +1 -0
  108. package/dist/esm/core/vuiProvider/notifyOffline.js +18 -0
  109. package/dist/esm/core/vuiProvider/resetCSS.d.ts +1 -1
  110. package/dist/esm/core/vuiProvider/resetCSS.d.ts.map +1 -1
  111. package/dist/esm/core/vuiProvider/useOfflineMode.d.ts +4 -0
  112. package/dist/esm/core/vuiProvider/useOfflineMode.d.ts.map +1 -0
  113. package/dist/esm/core/vuiProvider/useOfflineMode.js +15 -0
  114. package/dist/esm/core/vuiProvider/vuiProvider.d.ts +2 -0
  115. package/dist/esm/core/vuiProvider/vuiProvider.d.ts.map +1 -1
  116. package/dist/esm/core/vuiProvider/vuiProvider.js +3 -1
  117. package/dist/esm/icons/baseIcons/cul/culAutoSave.d.ts +4 -0
  118. package/dist/esm/icons/baseIcons/cul/culAutoSave.d.ts.map +1 -0
  119. package/dist/esm/icons/baseIcons/cul/culAutoSave.js +5 -0
  120. package/dist/esm/icons/baseIcons/fal/falArrowsLeftRight.d.ts +4 -0
  121. package/dist/esm/icons/baseIcons/fal/falArrowsLeftRight.d.ts.map +1 -0
  122. package/dist/esm/icons/baseIcons/fal/falArrowsLeftRight.js +5 -0
  123. package/dist/esm/icons/baseIcons/fal/falArrowsUpDown.d.ts +4 -0
  124. package/dist/esm/icons/baseIcons/fal/falArrowsUpDown.d.ts.map +1 -0
  125. package/dist/esm/icons/baseIcons/fal/falArrowsUpDown.js +5 -0
  126. package/dist/esm/icons/baseIcons/fal/falBalanceScale.d.ts +4 -0
  127. package/dist/esm/icons/baseIcons/fal/falBalanceScale.d.ts.map +1 -0
  128. package/dist/esm/icons/baseIcons/fal/falBalanceScale.js +5 -0
  129. package/dist/esm/icons/baseIcons/fal/falCodeBranch.d.ts +4 -0
  130. package/dist/esm/icons/baseIcons/fal/falCodeBranch.d.ts.map +1 -0
  131. package/dist/esm/icons/baseIcons/fal/falCodeBranch.js +5 -0
  132. package/dist/esm/icons/baseIcons/fal/falCodeCommit.d.ts +4 -0
  133. package/dist/esm/icons/baseIcons/fal/falCodeCommit.d.ts.map +1 -0
  134. package/dist/esm/icons/baseIcons/fal/falCodeCommit.js +5 -0
  135. package/dist/esm/icons/baseIcons/fal/falCodeMerge.d.ts +4 -0
  136. package/dist/esm/icons/baseIcons/fal/falCodeMerge.d.ts.map +1 -0
  137. package/dist/esm/icons/baseIcons/fal/falCodeMerge.js +5 -0
  138. package/dist/esm/icons/baseIcons/fal/falFileExclamation.d.ts +4 -0
  139. package/dist/esm/icons/baseIcons/fal/falFileExclamation.d.ts.map +1 -0
  140. package/dist/esm/icons/baseIcons/fal/falFileExclamation.js +5 -0
  141. package/dist/esm/icons/baseIcons/fal/falPencilRuler.d.ts +4 -0
  142. package/dist/esm/icons/baseIcons/fal/falPencilRuler.d.ts.map +1 -0
  143. package/dist/esm/icons/baseIcons/fal/falPencilRuler.js +5 -0
  144. package/dist/esm/icons/baseIcons/fal/falProjectDiagram.d.ts +4 -0
  145. package/dist/esm/icons/baseIcons/fal/falProjectDiagram.d.ts.map +1 -0
  146. package/dist/esm/icons/baseIcons/fal/falProjectDiagram.js +5 -0
  147. package/dist/esm/icons/baseIcons/fal/falRuler.d.ts +4 -0
  148. package/dist/esm/icons/baseIcons/fal/falRuler.d.ts.map +1 -0
  149. package/dist/esm/icons/baseIcons/fal/falRuler.js +5 -0
  150. package/dist/esm/icons/baseIcons/fas/fasGripDotsVertical.d.ts +4 -0
  151. package/dist/esm/icons/baseIcons/fas/fasGripDotsVertical.d.ts.map +1 -0
  152. package/dist/esm/icons/baseIcons/fas/fasGripDotsVertical.js +5 -0
  153. package/dist/esm/icons/baseIcons/fas/fasLayerGroup.d.ts +4 -0
  154. package/dist/esm/icons/baseIcons/fas/fasLayerGroup.d.ts.map +1 -0
  155. package/dist/esm/icons/baseIcons/fas/fasLayerGroup.js +5 -0
  156. package/dist/esm/icons/baseIcons/fas/fasMousePointer.d.ts +4 -0
  157. package/dist/esm/icons/baseIcons/fas/fasMousePointer.d.ts.map +1 -0
  158. package/dist/esm/icons/baseIcons/fas/fasMousePointer.js +5 -0
  159. package/dist/esm/icons/baseIcons/fas/fasShield.d.ts +4 -0
  160. package/dist/esm/icons/baseIcons/fas/fasShield.d.ts.map +1 -0
  161. package/dist/esm/icons/baseIcons/fas/fasShield.js +5 -0
  162. package/dist/esm/icons/baseIcons/icons.d.ts +15 -0
  163. package/dist/esm/icons/baseIcons/icons.d.ts.map +1 -1
  164. package/dist/esm/icons/baseIcons/icons.js +15 -0
  165. package/dist/esm/icons/baseIcons/types.d.ts +1 -1
  166. package/dist/esm/icons/baseIcons/types.d.ts.map +1 -1
  167. package/dist/esm/index.d.ts +1 -0
  168. package/dist/esm/index.d.ts.map +1 -1
  169. package/dist/esm/index.js +1 -0
  170. package/dist/esm/select/theme.d.ts +8 -0
  171. package/dist/esm/select/theme.d.ts.map +1 -1
  172. package/dist/esm/select/theme.js +8 -0
  173. package/dist/esm/tabs/useTabsState.d.ts +1 -1
  174. package/dist/esm/tabs/useTabsState.d.ts.map +1 -1
  175. package/dist/esm/theme/components.d.ts +8 -0
  176. package/dist/esm/theme/components.d.ts.map +1 -1
  177. package/dist/esm/theme/defaultTheme.d.ts +8 -0
  178. package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
  179. package/dist/esm/toast/useToast.d.ts +1 -1
  180. package/dist/esm/toast/useToast.d.ts.map +1 -1
  181. package/dist/esm/tutorial/index.d.ts +6 -0
  182. package/dist/esm/tutorial/index.d.ts.map +1 -0
  183. package/dist/esm/tutorial/index.js +5 -0
  184. package/dist/esm/tutorial/tutorial.d.ts +4 -0
  185. package/dist/esm/tutorial/tutorial.d.ts.map +1 -0
  186. package/dist/esm/tutorial/tutorial.js +25 -0
  187. package/dist/esm/tutorial/tutorial.types.d.ts +64 -0
  188. package/dist/esm/tutorial/tutorial.types.d.ts.map +1 -0
  189. package/dist/esm/tutorial/tutorial.types.js +1 -0
  190. package/dist/esm/tutorial/tutorialCard.d.ts +3 -0
  191. package/dist/esm/tutorial/tutorialCard.d.ts.map +1 -0
  192. package/dist/esm/tutorial/tutorialCard.js +37 -0
  193. package/dist/esm/tutorial/tutorialStep.d.ts +3 -0
  194. package/dist/esm/tutorial/tutorialStep.d.ts.map +1 -0
  195. package/dist/esm/tutorial/tutorialStep.js +7 -0
  196. package/dist/esm/tutorial/useTutorial.d.ts +8 -0
  197. package/dist/esm/tutorial/useTutorial.d.ts.map +1 -0
  198. package/dist/esm/tutorial/useTutorial.js +10 -0
  199. package/dist/esm/utils/uid.d.ts +1 -1
  200. package/dist/esm/utils/uid.d.ts.map +1 -1
  201. package/package.json +1 -1
  202. package/src/core/vuiProvider/index.ts +1 -0
  203. package/src/core/vuiProvider/notifyOffline.ts +22 -0
  204. package/src/core/vuiProvider/useOfflineMode.ts +18 -0
  205. package/src/core/vuiProvider/vuiProvider.tsx +6 -1
  206. package/src/icons/baseIcons/cul/culAutoSave.ts +8 -0
  207. package/src/icons/baseIcons/fal/falArrowsLeftRight.ts +8 -0
  208. package/src/icons/baseIcons/fal/falArrowsUpDown.ts +8 -0
  209. package/src/icons/baseIcons/fal/falBalanceScale.ts +8 -0
  210. package/src/icons/baseIcons/fal/falCodeBranch.ts +8 -0
  211. package/src/icons/baseIcons/fal/falCodeCommit.ts +8 -0
  212. package/src/icons/baseIcons/fal/falCodeMerge.ts +8 -0
  213. package/src/icons/baseIcons/fal/falFileExclamation.ts +8 -0
  214. package/src/icons/baseIcons/fal/falPencilRuler.ts +8 -0
  215. package/src/icons/baseIcons/fal/falProjectDiagram.ts +8 -0
  216. package/src/icons/baseIcons/fal/falRuler.ts +8 -0
  217. package/src/icons/baseIcons/fas/fasGripDotsVertical.ts +8 -0
  218. package/src/icons/baseIcons/fas/fasLayerGroup.ts +8 -0
  219. package/src/icons/baseIcons/fas/fasMousePointer.ts +8 -0
  220. package/src/icons/baseIcons/fas/fasShield.ts +8 -0
  221. package/src/icons/baseIcons/icons.ts +15 -0
  222. package/src/icons/baseIcons/types.ts +15 -0
  223. package/src/icons/readme.md +10 -1
  224. package/src/index.ts +1 -0
  225. package/src/select/theme.ts +8 -0
  226. package/src/tutorial/index.ts +5 -0
  227. package/src/tutorial/tutorial.tsx +60 -0
  228. package/src/tutorial/tutorial.types.ts +69 -0
  229. package/src/tutorial/tutorialCard.tsx +137 -0
  230. package/src/tutorial/tutorialStep.tsx +20 -0
  231. package/src/tutorial/useTutorial.ts +16 -0
@@ -0,0 +1,69 @@
1
+ import React from 'react'
2
+ import { Placement } from 'tippy.js'
3
+
4
+ export type TutorialDataStep = {
5
+ /** title of step */
6
+ title: string
7
+ /** description of step */
8
+ description: string
9
+ /** Read more link */
10
+ readMoreLink?: string
11
+ }
12
+
13
+ export type TutorialProps = {
14
+ /** Target element for the tutorial */
15
+ children: React.ReactNode
16
+ /** Custom class name */
17
+ className?: string
18
+ /** An id for further handling with localStorage */
19
+ id: string
20
+ /** A general tutorial description */
21
+ description?: string
22
+ /** Invoked once the dismiss button clicked. */
23
+ onDismiss?: () => void
24
+ /** Invoked once the finish button clicked. */
25
+ onFinish?: () => void
26
+ /** Popover placement */
27
+ placement?: Placement
28
+ /** Link to page where user can read more */
29
+ readMoreLink?: string
30
+ /** An array of steps */
31
+ steps: TutorialDataStep[]
32
+ /** A general tutorial title */
33
+ title: string
34
+ }
35
+
36
+ export type TutorialCardProps = {
37
+ /** Custom class name */
38
+ className?: string
39
+ /** The card title */
40
+ title: string
41
+ /** Steps of the card */
42
+ steps: TutorialDataStep[]
43
+ /** Callback for the dismiss button click. */
44
+ onDismiss?: () => void
45
+ /** Callback for the finish button click. */
46
+ onFinish?: () => void
47
+ /** Description of feature */
48
+ description?: string
49
+ /** Link to page where they can read more */
50
+ readMoreLink?: string
51
+ }
52
+
53
+ export type TutorialStepProps = {
54
+ /** If the step is active or not */
55
+ active: boolean
56
+ /** Title of step */
57
+ title: string
58
+ /** Description of step */
59
+ description: string
60
+ /** Link to page where user can read more */
61
+ readMoreLink?: string
62
+ }
63
+
64
+ export type TutorialStepWrapper = {
65
+ key: number
66
+ step: TutorialDataStep
67
+ }
68
+
69
+ export type CloseEvent = 'dismissed' | 'finished'
@@ -0,0 +1,137 @@
1
+ import React, { useEffect, useState } from 'react'
2
+
3
+ import { Box, Button, Card, H3, Icon, T } from '../index'
4
+ import { TutorialCardProps, TutorialDataStep, TutorialStepWrapper } from './tutorial.types'
5
+ import { TutorialStep } from './tutorialStep'
6
+
7
+ export function TutorialCard({
8
+ className,
9
+ description,
10
+ title,
11
+ readMoreLink,
12
+ steps: propsSteps = [],
13
+ onDismiss,
14
+ onFinish
15
+ }: TutorialCardProps) {
16
+ const [started, setStarted] = useState<boolean>(false)
17
+ const [steps, setSteps] = useState<TutorialStepWrapper[]>([])
18
+ const [activeStep, setActiveStep] = useState<number>(0)
19
+
20
+ useEffect(() => {
21
+ if (title && propsSteps.length) {
22
+ const s = propsSteps.map((step, key) => ({ active: false, step, key }))
23
+
24
+ const finalStep: TutorialDataStep = {
25
+ title: `Completed!`,
26
+ description: `${readMoreLink ? 'To learn more, please visit:' : 'Thank you!'}`
27
+ }
28
+
29
+ if (readMoreLink) finalStep.readMoreLink = readMoreLink
30
+
31
+ setSteps([...s, { step: finalStep, key: propsSteps.length }])
32
+ }
33
+ }, [title, propsSteps])
34
+
35
+ const isStartStep = activeStep === 0
36
+ const isFinalStep = activeStep === propsSteps.length
37
+ const decrementStep = () => setActiveStep(activeStep - 1)
38
+ const incrementStep = () => setActiveStep(activeStep + 1)
39
+
40
+ return (
41
+ <Card bg="blue.100" className={className} color="white" column justifyContent="space-between" minH={200} w={450}>
42
+ <Box
43
+ alignContent="center"
44
+ alignItems="center"
45
+ display="flex"
46
+ flex={0}
47
+ flexDirection="row"
48
+ flexGrow={0}
49
+ justifyContent="space-between"
50
+ m={2}
51
+ mb={1}
52
+ minH="48px"
53
+ row
54
+ style={{ WebkitFlexGrow: '0' }}
55
+ >
56
+ <H3>{title}</H3>
57
+ {!isFinalStep && (
58
+ <Button color="white" hoverColor="prussian.80" icon="falTimes" onClick={onDismiss} scale={2} variant="text" />
59
+ )}
60
+ </Box>
61
+ <Box column flex={5} hidden={started} mx={2}>
62
+ <T flexGrow={1}>{description}</T>
63
+ <Box alignItems="center" flexDirection="row-reverse" row>
64
+ <Button bg="white" color="prussian.80" float="right" mb={0} onClick={() => setStarted(true)} pb={0}>
65
+ Let&apos;s get started!
66
+ </Button>
67
+ </Box>
68
+ </Box>
69
+ <Box flex={5} hidden={!started} mx={2} row>
70
+ {steps?.map?.(s => (
71
+ <TutorialStep
72
+ active={s.key === activeStep}
73
+ description={s.step.description}
74
+ key={s.step.title}
75
+ readMoreLink={s.step.readMoreLink}
76
+ title={s.step.title}
77
+ />
78
+ ))}
79
+ </Box>
80
+ <Box
81
+ alignItems="center"
82
+ flex={0}
83
+ flexGrow={0}
84
+ hidden={!started}
85
+ justifyContent="space-between"
86
+ m={2}
87
+ mt={0}
88
+ row
89
+ style={{ WebkitFlexGrow: '0' }}
90
+ >
91
+ <Button
92
+ color="white"
93
+ disabled={isStartStep}
94
+ disabledBg="blue.100"
95
+ disabledBorderColor="blue.100"
96
+ disabledColor="prussian.80"
97
+ focusBorderColor="none"
98
+ hoverBg="none"
99
+ hoverBorder="none"
100
+ hoverBorderColor="blue.100"
101
+ icon="falArrowLeft"
102
+ onClick={decrementStep}
103
+ scale={2}
104
+ transition="none"
105
+ variant="text"
106
+ w="80"
107
+ />
108
+
109
+ <Box className="vuiTutorialStepDots">
110
+ {steps?.map?.(s => (
111
+ <Icon color={s.key === activeStep ? 'white' : 'grey.70'} key={s.key} name="cusDotFull" />
112
+ ))}
113
+ </Box>
114
+
115
+ {isFinalStep ? (
116
+ <Button bg="white" color="prussian.80" hoverBg="blue.30" hoverColor="prussian.80" onClick={onFinish}>
117
+ Finish
118
+ </Button>
119
+ ) : (
120
+ <Button
121
+ color="white"
122
+ focusBorderColor="none"
123
+ hoverBg="none"
124
+ hoverBorder="none"
125
+ hoverBorderColor="blue.100"
126
+ icon="falArrowRight"
127
+ onClick={incrementStep}
128
+ scale={2}
129
+ transition="none"
130
+ variant="text"
131
+ w="80"
132
+ />
133
+ )}
134
+ </Box>
135
+ </Card>
136
+ )
137
+ }
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+
3
+ import { H5, P, v } from '../index'
4
+ import { TutorialStepProps } from './tutorial.types'
5
+
6
+ export const TutorialStep = ({ active, description, readMoreLink, title }: TutorialStepProps) => (
7
+ <v.div className="vui-tutorialStep" hidden={!active} pb={2}>
8
+ <H5 fontWeight="medium" mb={1}>
9
+ {title}
10
+ </H5>
11
+ <P>{description}</P>
12
+ {!!readMoreLink && (
13
+ <P>
14
+ <v.a href={readMoreLink} textDecoration="underline">
15
+ {readMoreLink}
16
+ </v.a>
17
+ </P>
18
+ )}
19
+ </v.div>
20
+ )
@@ -0,0 +1,16 @@
1
+ import { useEffect, useState } from 'react'
2
+
3
+ import { CloseEvent } from './tutorial.types'
4
+
5
+ export const useTutorial = (tutorialId: string) => {
6
+ const [isVisible, setIsVisible] = useState<boolean>(false)
7
+ const localStorageId = `vuiTutorial-${tutorialId}`
8
+
9
+ useEffect(() => {
10
+ setIsVisible(!window.localStorage.getItem(localStorageId))
11
+ }, [])
12
+
13
+ const saveDisplayed = (e: CloseEvent) => window.localStorage.setItem(localStorageId, e)
14
+
15
+ return { isVisible, setIsVisible, saveDisplayed }
16
+ }