* Fix vite build (tauri build still broken) * Fix yarn builds with a couple of shortcuts * Fix file creation * Fix documentDir behavior * Got stream with default file * Clean up * Clean up * Use 'unstable'; fix devtools callsite The API changed a bit here, which forces us to use the unstable crate feature. The call to open devtools is also new; it's now on the webview not window. Signed-off-by: Paul R. Tagliamonte <paul@kittycad.io> * Bring back read_dir_recursive from v1 * Fix dates * More fixes, incl. conf files * cargo fmt * Add Updater plugin * Fix types * Fix isTauri detection and updater bootup * Schemas * Clean up * Disable devtools * Attempt at fixing builds * WIP Ubuntu dep * WIP Ubuntu dep * WIP keys in debug * Enable updater only on release builds * Reenable webtools on debug * No linux bundles * Typo * Attemp at fixing --bundles none * Manual tauri debug build * Empty commit to trigger the CI * Fix settings * Empty commit to trigger the CI * Merge branch 'main' into pierremtb/issue1349 * Add allow-create perm * tauri-driver no cap * Empty commit to trigger the CI * Clean up * Clean up * Migrate to tauri v2 Fixes #1349 * Fix fmt * Merge branch 'main' into pierremtb/issue1349 * Force BUILD_RELEASE: true * Bump tauri to new beta * Merge branch 'main' into pierremtb/issue1349 * Fix linux tests * Fix types * Add --verbose to tauri-action * Move --verbose to front * Back to tauri-driver@0.1.3 and single \ for win * Back to latest driver, and windows wip * Disable release conf temporarily * Rollback to 2.0.0-beta.2 * Rollback to 2.0.0-beta.1 * Move bundle to root for src-tauri/tauri.release.conf.json * All packages to latest (add http and shell to package.json) * Testing latest commit for tauri-action * Remove tauri action * Add cat * WIP * Update ci.yml * Disable release conf * Disable rust cache * Add tauri-action back for release builds * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Update .codespellrc * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Trigger CI * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Fix type * Clean up * More clean up * Fix path concatenation with join * Attempt at fixing linux tests * Config clean up * Downgrade to tauri-driver@0.1.3 * Looks like tauri v2 is actually doing better with linux package names ah! * Change Linux apt packages * Increase wdio connectionRetryTimeout * Revert connectionRetryTimeout and bump tauri packages * Back to latest tauri-driver * Disable linux e2e tests * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Trigger CI * Clean up * Update snapshots * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Trigger CI * Remove @sentry/react * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Rename migrated.json to desktop.json * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Trigger CI * Change wasm url to http on Windows --------- Signed-off-by: Paul R. Tagliamonte <paul@kittycad.io> Co-authored-by: Paul R. Tagliamonte <paul@kittycad.io> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev>
188 lines
6.0 KiB
TypeScript
188 lines
6.0 KiB
TypeScript
import {
|
|
ONBOARDING_PROJECT_NAME,
|
|
OnboardingButtons,
|
|
useDismiss,
|
|
useNextClick,
|
|
} from '.'
|
|
import { onboardingPaths } from 'routes/Onboarding/paths'
|
|
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
|
|
import { Themes, getSystemTheme } from 'lib/theme'
|
|
import { bracket } from 'lib/exampleKcl'
|
|
import {
|
|
createNewProject,
|
|
getNextProjectIndex,
|
|
getProjectsInDir,
|
|
interpolateProjectNameWithIndex,
|
|
} from 'lib/tauriFS'
|
|
import { isTauri } from 'lib/isTauri'
|
|
import { useNavigate } from 'react-router-dom'
|
|
import { paths } from 'lib/paths'
|
|
import { useEffect } from 'react'
|
|
import { kclManager } from 'lib/singletons'
|
|
import { join } from '@tauri-apps/api/path'
|
|
import { APP_NAME, PROJECT_ENTRYPOINT } from 'lib/constants'
|
|
|
|
function OnboardingWithNewFile() {
|
|
const navigate = useNavigate()
|
|
const dismiss = useDismiss()
|
|
const next = useNextClick(onboardingPaths.INDEX)
|
|
const {
|
|
settings: {
|
|
context: {
|
|
app: { projectDirectory },
|
|
},
|
|
},
|
|
} = useSettingsAuthContext()
|
|
|
|
async function createAndOpenNewProject() {
|
|
const projects = await getProjectsInDir(projectDirectory.current)
|
|
const nextIndex = await getNextProjectIndex(
|
|
ONBOARDING_PROJECT_NAME,
|
|
projects
|
|
)
|
|
const name = interpolateProjectNameWithIndex(
|
|
ONBOARDING_PROJECT_NAME,
|
|
nextIndex
|
|
)
|
|
const newFile = await createNewProject(
|
|
await join(projectDirectory.current, name),
|
|
bracket
|
|
)
|
|
navigate(
|
|
`${paths.FILE}/${encodeURIComponent(
|
|
await join(newFile.path, PROJECT_ENTRYPOINT)
|
|
)}${paths.ONBOARDING.INDEX}`
|
|
)
|
|
}
|
|
return (
|
|
<div className="fixed inset-0 z-50 grid place-content-center bg-chalkboard-110/50">
|
|
<div className="max-w-3xl p-8 rounded bg-chalkboard-10 dark:bg-chalkboard-90">
|
|
{!isTauri() ? (
|
|
<>
|
|
<h1 className="text-3xl font-bold text-warn-80 dark:text-warn-10">
|
|
Replaying onboarding resets your code
|
|
</h1>
|
|
<p className="my-4">
|
|
We see you have some of your own code written in this project.
|
|
Please save it somewhere else before continuing the onboarding.
|
|
</p>
|
|
<OnboardingButtons
|
|
className="mt-6"
|
|
dismiss={dismiss}
|
|
next={() => {
|
|
kclManager.setCodeAndExecute(bracket)
|
|
next()
|
|
}}
|
|
nextText="Overwrite code and continue"
|
|
/>
|
|
</>
|
|
) : (
|
|
<>
|
|
<h1 className="flex flex-wrap items-center gap-4 text-3xl font-bold">
|
|
Would you like to create a new project?
|
|
</h1>
|
|
<section className="my-12">
|
|
<p className="my-4">
|
|
You have some content in this project that we don't want to
|
|
overwrite. If you would like to create a new project, please
|
|
click the button below.
|
|
</p>
|
|
</section>
|
|
<OnboardingButtons
|
|
className="mt-6"
|
|
dismiss={dismiss}
|
|
next={() => {
|
|
void createAndOpenNewProject()
|
|
kclManager.setCode(bracket, false)
|
|
dismiss()
|
|
}}
|
|
nextText="Make a new project"
|
|
/>
|
|
</>
|
|
)}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default function Introduction() {
|
|
const {
|
|
settings: {
|
|
state: {
|
|
context: {
|
|
app: { theme },
|
|
},
|
|
},
|
|
},
|
|
} = useSettingsAuthContext()
|
|
const getLogoTheme = () =>
|
|
theme.current === Themes.Light ||
|
|
(theme.current === Themes.System && getSystemTheme() === Themes.Light)
|
|
? '-dark'
|
|
: ''
|
|
const dismiss = useDismiss()
|
|
const next = useNextClick(onboardingPaths.CAMERA)
|
|
const isStarterCode = kclManager.code === '' || kclManager.code === bracket
|
|
|
|
useEffect(() => {
|
|
if (kclManager.code === '') kclManager.setCode(bracket)
|
|
}, [])
|
|
|
|
return isStarterCode ? (
|
|
<div className="fixed inset-0 z-50 grid place-content-center bg-chalkboard-110/50">
|
|
<div className="max-w-3xl p-8 rounded bg-chalkboard-10 dark:bg-chalkboard-90">
|
|
<h1 className="flex flex-wrap items-center gap-4 text-3xl font-bold">
|
|
<img
|
|
src={`/zma-logomark${getLogoTheme()}.svg`}
|
|
alt={APP_NAME}
|
|
className="h-20 max-w-full"
|
|
/>
|
|
<span className="px-3 py-1 text-base rounded-full bg-primary/10 text-primary">
|
|
Alpha
|
|
</span>
|
|
</h1>
|
|
<section className="my-12">
|
|
<p className="my-4">
|
|
Welcome to {APP_NAME}! This is a hardware design tool that lets you
|
|
edit visually, with code, or both. It's powered by the KittyCAD
|
|
Design API, the first API created for anyone to build hardware
|
|
design tools. The 3D view is not running on your computer, but is
|
|
instead being streamed to you from an instance of our Geometry
|
|
Engine on a remote GPU as video.
|
|
</p>
|
|
<p className="my-4">
|
|
This is an alpha release, so you will encounter bugs and missing
|
|
features. You can read our{' '}
|
|
<a
|
|
href="https://gist.github.com/jgomez720/5cd53fb7e8e54079f6dc0d2625de5393"
|
|
target="_blank"
|
|
rel="noreferrer noopener"
|
|
>
|
|
expectations for alpha users here
|
|
</a>
|
|
, and please give us feedback on your experience{' '}
|
|
<a
|
|
href="https://discord.com/invite/JQEpHR7Nt2"
|
|
target="_blank"
|
|
rel="noreferrer noopener"
|
|
>
|
|
our Discord
|
|
</a>
|
|
! We are trying to release as early as possible to get feedback from
|
|
users like you.
|
|
</p>
|
|
</section>
|
|
<OnboardingButtons
|
|
currentSlug={onboardingPaths.INDEX}
|
|
className="mt-6"
|
|
dismiss={dismiss}
|
|
next={next}
|
|
nextText="Mouse Controls"
|
|
/>
|
|
</div>
|
|
</div>
|
|
) : (
|
|
<OnboardingWithNewFile />
|
|
)
|
|
}
|