docs: prep for v2 documentation (#6710)
This PR includes documentation that preps for v2 docs (but doesn't introduce new docs). _Note: The number of file changes in the PR is due to find-and-replace within the `references` which is unavoidable. Let me know if I should move it to another PR._ ## Changes - Change Medusa version in base OAS used for v2. - Fix to docblock generator related to not catching all path parameters. - Added typedoc plugin that generates ER Diagrams, which will be used specifically for data model references in commerce modules. - Changed OAS tool to output references in `www/apps/api-reference/specs-v2` directory when the `--v2` option is used. - Added a version switcher to the API reference to switch between V1 and V2. This switcher is enabled by an environment variable, so it won't be visible/usable at the moment. - Upgraded docusaurus to v3.0.1 - Added new Vale rules to ensure correct spelling of Medusa Admin and module names. - Added new components to the `docs-ui` package that will be used in future documentation changes.
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
"use client"
|
||||
|
||||
import React, { useEffect } from "react"
|
||||
import { useLearningPath, useNotifications } from "@/providers"
|
||||
import { LearningPathIcon } from "../../components/LearningPath/Icon"
|
||||
import { LearningPathFinish } from "../../components/LearningPath/Finish"
|
||||
import { LearningPathSteps } from "../../components/LearningPath/Steps"
|
||||
|
||||
export 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="!w-2 !h-2"
|
||||
imgClassName="!w-1.5 !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?.()
|
||||
|
||||
if (!id) {
|
||||
return
|
||||
}
|
||||
|
||||
addNotification?.({
|
||||
title: path.label,
|
||||
text: step?.description,
|
||||
onClose: () => handleClose(id),
|
||||
layout: "empty",
|
||||
id,
|
||||
children: LearningStep(id),
|
||||
className: "flex flex-col",
|
||||
})
|
||||
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])
|
||||
}
|
||||
Reference in New Issue
Block a user