* Remove unused `telemetryLoader` * Remove onboarding redirect behavior * Allow subRoute to be passed to navigateToProject * Replace warning dialog routes with toasts * Wire up new utilities and toasts to UI components * Add home sidebar buttons for tutorial flow * Rename menu item * Add flex-1 so home-layout fills available space * Remove onboarding avatar tests, they are becoming irrelevant * Consolidate onboarding tests to one longer one and update it to not use pixel color checks, and use fixtures. * Shorten warning toast button text * tsc, lint, and circular deps * Update circular dep file * Fix mistakes made in circular update tweaking * One more dumb created circular dep * Update src/routes/Onboarding/utils.tsx Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> * Fix narrow screen home layout breaking * fix: kevin, navigation routes fixed * fix: filename parsing is correct now for onboarding with the last file sep * Fix e2e test state checks that are diff on Linux * Create onboarding project entirely through systemIOMachine * Fix Windows path construction * Make utility to verify a string is an onboarding value * Little biome formatting suggestion fix * Units onboarding step was not using OnboardingButtons * Add type checking of next and previous status, fix useNextClick * Update `OnboardingStatus` type on WASM side * Make onboarding different on browser and web, placeholder component * Show proof of concept with custom content per route * Make text type args not insta dismiss when you click anywhere * Make some utility hooks for the onboarding * Update requestedProjectName along with requestedProjectName * Build out a rough draft of desktop onboarding * Remove unused onboarding route files * Build out rough draft of browser onboarding content * @jgomez720 browser flow feedback * @jgomez420 desktop feedback * tsc and lints * Tweaks * Import is dead, long live Add files * What's up with my inability to type "highlight"? * Codespell and String casting * Update browser sample to be axial fan * lint and tsc * codespell again * Remove unused nightmare function `useDemoCode` * Add a few unit tests * Update desktop to use bulk file creation from #6747 * Oops overwrote main.kcl on the modify with text-to-cad step * Undo the dumb use of `sep` that I introduced * Fix up project test which was fragile to the number of steps in the onboarding smh * Fix up onboarding flow test * typo --------- Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> Co-authored-by: Kevin Nadro <kevin@zoo.dev>
76 lines
2.6 KiB
TypeScript
76 lines
2.6 KiB
TypeScript
import type { OnboardingStatus } from '@rust/kcl-lib/bindings/OnboardingStatus'
|
|
import { isDesktop } from '@src/lib/isDesktop'
|
|
|
|
export type OnboardingPath = OnboardingStatus & `/${string}`
|
|
export type DesktopOnboardingPath = OnboardingPath & `/desktop${string}`
|
|
export type BrowserOnboardingPath = OnboardingPath & `/browser${string}`
|
|
|
|
// companion to "desktop routes" in `OnboardingRoutes` enum in Rust
|
|
export const desktopOnboardingPaths: Record<string, DesktopOnboardingPath> = {
|
|
welcome: '/desktop',
|
|
scene: '/desktop/scene',
|
|
toolbar: '/desktop/toolbar',
|
|
textToCadWelcome: '/desktop/text-to-cad',
|
|
textToCadPrompt: '/desktop/text-to-cad-prompt',
|
|
featureTreePane: '/desktop/feature-tree-pane',
|
|
codePane: '/desktop/code-pane',
|
|
projectFilesPane: '/desktop/project-pane',
|
|
otherPanes: '/desktop/other-panes',
|
|
promptToEditWelcome: '/desktop/prompt-to-edit',
|
|
promptToEditPrompt: '/desktop/prompt-to-edit-prompt',
|
|
promptToEditResult: '/desktop/prompt-to-edit-result',
|
|
imports: '/desktop/imports',
|
|
exports: '/desktop/exports',
|
|
conclusion: '/desktop/conclusion',
|
|
}
|
|
|
|
// companion to "web routes" in `OnboardingRoutes` enum in Rust
|
|
export const browserOnboardingPaths: Record<string, BrowserOnboardingPath> = {
|
|
welcome: '/browser',
|
|
scene: '/browser/scene',
|
|
toolbar: '/browser/toolbar',
|
|
textToCadWelcome: '/browser/text-to-cad',
|
|
textToCadPrompt: '/browser/text-to-cad-prompt',
|
|
featureTreePane: '/browser/feature-tree-pane',
|
|
promptToEditWelcome: '/browser/prompt-to-edit',
|
|
promptToEditPrompt: '/browser/prompt-to-edit-prompt',
|
|
promptToEditResult: '/browser/prompt-to-edit-result',
|
|
conclusion: '/browser/conclusion',
|
|
}
|
|
|
|
export const onboardingPaths = {
|
|
desktop: desktopOnboardingPaths,
|
|
browser: browserOnboardingPaths,
|
|
}
|
|
|
|
export const onboardingPathsArray = Object.values(onboardingPaths).flatMap(
|
|
(p) => Object.values(p)
|
|
)
|
|
|
|
/** Whatever the first onboarding path on the current platform is. */
|
|
export const onboardingStartPath = Object.values(
|
|
onboardingPaths[isDesktop() ? 'desktop' : 'browser']
|
|
)[0]
|
|
|
|
export const isOnboardingPath = (input: string): input is OnboardingStatus => {
|
|
return Object.values(onboardingPaths)
|
|
.flatMap((o) => Object.values(o))
|
|
.includes(input as OnboardingPath)
|
|
}
|
|
|
|
export const isDesktopOnboardingPath = (
|
|
input: string
|
|
): input is OnboardingStatus => {
|
|
return Object.values(onboardingPaths.desktop).includes(
|
|
input as DesktopOnboardingPath
|
|
)
|
|
}
|
|
|
|
export const isBrowserOnboardingPath = (
|
|
input: string
|
|
): input is OnboardingStatus => {
|
|
return Object.values(onboardingPaths.browser).includes(
|
|
input as BrowserOnboardingPath
|
|
)
|
|
}
|