docs: documentation changes for release (#4300)
* docs: added manage reservations user guide (#4290) * docs: added manage reservations user guide * removed feature flag details * docs: added how-to for custom reservations (#4292) * docs: added how-to for custom reservations * eslint fixes * docs: added product module documentation (#4287) * docs: added product module documentation * added details about optional environment variables * small fixes * Remove reference link * added example usages * added link to sample project * address PR feedback * docs: moved product module guide + added product module tabs (#4307) * added product module tab * adjust design of badge * docs: added onboarding features (#4168) * added marketplace page * added subscription roadmap * added rating for onboarding * added learning path components * small fixes * fix build error * fix eslint errors * change roadmaps to recipes * small change in text * optimize learning path and notifications * fix tracking usage * fix eslint errors * added enter/exit animation * allow starting a path using a query parameter * fix gap between notifications * address vercel comments * fixed links issue * changed create-medusa-app docs steps * move troubleshooting section * improved tracking across docs * fix build errors * remove console * added a note about `boilerplate` option * added troubleshooting section for eagain * added invite option in cli reference * added track event for finished onboarding * update boilerplate option name * redesigned learning path component * docs: added how to create widget docs (#4318) * docs: added how to create widget docs * remove development guide * added types * docs: added details about createCustomAdminHooks (#4288) * docs: added details about createCustomAdminHooks * small improvement * added missing import * small changes * docs: added onboarding guide (#4320) * docs: added how to create widget docs * remove development guide * docs: added onboarding guide * added types * added recipes link * small adjustments * fixed eslint errors * styling fixes * change to singular product module * updated the what's new section * shorten down medusa react card * updated tailwind configurations * fix build error * fix newspaper icon * style fixes * change modal shadow * fix color of line numbers * fix code fade color * docs: updated admin documentations * eslint fixes * text changes * added a note about beta version * remove empty object argument * remove demo repo url * fix selection color for code headers * general fixes * fix eslint error * changed code theme * added preparation step * changes regarding beta version * Update docs/content/modules/products/serverless-module.md Co-authored-by: Riqwan Thamir <rmthamir@gmail.com> * Update docs/content/modules/products/serverless-module.md Co-authored-by: Riqwan Thamir <rmthamir@gmail.com> --------- Co-authored-by: Riqwan Thamir <rmthamir@gmail.com> Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
94
www/docs/src/hooks/use-current-learning-path.tsx
Normal file
94
www/docs/src/hooks/use-current-learning-path.tsx
Normal file
@@ -0,0 +1,94 @@
|
||||
import React, { useEffect } from "react"
|
||||
import { useLearningPath } from "../providers/LearningPath"
|
||||
import { useNotifications } from "../providers/NotificationProvider"
|
||||
import LearningPathSteps from "../components/LearningPath/Steps"
|
||||
import LearningPathFinish from "../components/LearningPath/Finish"
|
||||
import LearningPathIcon from "../components/LearningPath/Icon"
|
||||
|
||||
const useCurrentLearningPath = () => {
|
||||
const { path, currentStep, updatePath, endPath } = useLearningPath()
|
||||
const step = path?.steps[currentStep]
|
||||
const {
|
||||
addNotification,
|
||||
generateId,
|
||||
removeNotification,
|
||||
updateNotification,
|
||||
} = useNotifications()
|
||||
|
||||
// used when a notification closed (finished or not)
|
||||
const handleClose = (notificationId: string, shouldEndPath = true) => {
|
||||
if (shouldEndPath) {
|
||||
setTimeout(() => {
|
||||
endPath()
|
||||
}, 500)
|
||||
}
|
||||
removeNotification(notificationId)
|
||||
}
|
||||
|
||||
// used when the learning path is completely finished
|
||||
// shows the finish step, if the path has any
|
||||
const handleFinish = (notificationId: string) => {
|
||||
if (path.finish) {
|
||||
updateNotification(notificationId, {
|
||||
title: path.finish.step.title,
|
||||
text: path.finish.step.description,
|
||||
type: "custom",
|
||||
layout: "default",
|
||||
CustomIcon: (
|
||||
<LearningPathIcon
|
||||
className="!tw-w-2 !tw-h-2"
|
||||
imgClassName="!tw-w-1.5 !tw-h-1.5"
|
||||
/>
|
||||
),
|
||||
children: (
|
||||
<LearningPathFinish
|
||||
{...path.finish}
|
||||
onRating={() =>
|
||||
setTimeout(() => {
|
||||
handleClose(notificationId, false)
|
||||
}, 1500)
|
||||
}
|
||||
/>
|
||||
),
|
||||
})
|
||||
endPath()
|
||||
} else {
|
||||
handleClose(notificationId)
|
||||
}
|
||||
}
|
||||
|
||||
const LearningStep = (notificationId: string) => {
|
||||
return <LearningPathSteps onFinish={() => handleFinish(notificationId)} />
|
||||
}
|
||||
|
||||
// create a notification when a path is initialized
|
||||
useEffect(() => {
|
||||
if (path && !path.notificationId) {
|
||||
const id = generateId()
|
||||
|
||||
addNotification({
|
||||
title: path.label,
|
||||
text: step?.description,
|
||||
onClose: () => handleClose(id),
|
||||
layout: "empty",
|
||||
id,
|
||||
children: LearningStep(id),
|
||||
})
|
||||
updatePath({
|
||||
notificationId: id,
|
||||
})
|
||||
}
|
||||
}, [path])
|
||||
|
||||
// update an existing notification when the step changes
|
||||
useEffect(() => {
|
||||
if (path && path.notificationId && step) {
|
||||
updateNotification(path.notificationId, {
|
||||
text: step?.description,
|
||||
children: LearningStep(path.notificationId),
|
||||
})
|
||||
}
|
||||
}, [step])
|
||||
}
|
||||
|
||||
export default useCurrentLearningPath
|
||||
37
www/docs/src/hooks/use-onboarding.tsx
Normal file
37
www/docs/src/hooks/use-onboarding.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import React, { useEffect, useState } from "react"
|
||||
import { useQueryStringValue } from "@docusaurus/theme-common/internal"
|
||||
import { useNotifications } from "../providers/NotificationProvider"
|
||||
import Rating from "../components/Rating"
|
||||
import { useUser } from "../providers/User"
|
||||
|
||||
const useOnboarding = () => {
|
||||
const isOnboarding = useQueryStringValue("ref") === "onboarding"
|
||||
const [showNotification, setShowNotification] = useState(isOnboarding)
|
||||
const { addNotification, removeNotification, generateId } = useNotifications()
|
||||
const { track } = useUser()
|
||||
|
||||
useEffect(() => {
|
||||
if (isOnboarding) {
|
||||
track("finished_onboarding")
|
||||
const id = generateId()
|
||||
addNotification({
|
||||
title: "Thank you for installing Medusa!",
|
||||
text: "Please rate your onboarding experience",
|
||||
type: "success",
|
||||
show: showNotification,
|
||||
setShow: setShowNotification,
|
||||
id,
|
||||
children: (
|
||||
<Rating
|
||||
event="rating_onboarding"
|
||||
onRating={() => {
|
||||
setTimeout(() => removeNotification(id), 1500)
|
||||
}}
|
||||
/>
|
||||
),
|
||||
})
|
||||
}
|
||||
}, [])
|
||||
}
|
||||
|
||||
export default useOnboarding
|
||||
Reference in New Issue
Block a user