2023-07-25 10:40:26 -04:00
|
|
|
import { faArrowRight, faXmark } from '@fortawesome/free-solid-svg-icons'
|
|
|
|
import { ActionButton } from '../../components/ActionButton'
|
2023-08-15 21:56:24 -04:00
|
|
|
import { onboardingPaths, useDismiss, useNextClick } from '.'
|
2023-08-06 21:29:26 -04:00
|
|
|
import { useStore } from '../../useStore'
|
2023-07-25 10:40:26 -04:00
|
|
|
|
2023-08-15 21:56:24 -04:00
|
|
|
export default function Units() {
|
2023-08-06 21:29:26 -04:00
|
|
|
const { isMouseDownInStream } = useStore((s) => ({
|
|
|
|
isMouseDownInStream: s.isMouseDownInStream,
|
|
|
|
}))
|
2023-07-25 10:40:26 -04:00
|
|
|
const dismiss = useDismiss()
|
2023-08-15 21:56:24 -04:00
|
|
|
const next = useNextClick(onboardingPaths.SKETCHING)
|
2023-07-25 10:40:26 -04:00
|
|
|
|
|
|
|
return (
|
2023-08-06 21:29:26 -04:00
|
|
|
<div className="fixed grid justify-center items-end inset-0 z-50 pointer-events-none">
|
|
|
|
<div
|
|
|
|
className={
|
|
|
|
'max-w-2xl flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' +
|
|
|
|
(isMouseDownInStream ? '' : ' pointer-events-auto')
|
|
|
|
}
|
|
|
|
>
|
2023-07-25 10:40:26 -04:00
|
|
|
<h1 className="text-2xl font-bold">Camera</h1>
|
|
|
|
<p className="mt-6">
|
2023-08-31 10:41:24 -04:00
|
|
|
Moving the camera is easy! The controls are as you might expect:
|
|
|
|
</p>
|
|
|
|
<ul className="list-disc list-outside ms-8 mb-4">
|
|
|
|
<li>Click and drag anywhere in the scene to rotate the camera</li>
|
|
|
|
<li>
|
|
|
|
Hold down the <kbd>Shift</kbd> key while clicking and dragging to
|
|
|
|
pan the camera
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
Hold down the <kbd>Ctrl</kbd> key while dragging to zoom. You can
|
|
|
|
also use the scroll wheel to zoom in and out.
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<p>
|
|
|
|
What you're seeing here is just a video, and your interactions are
|
|
|
|
being sent to our Geometry Engine API, which sends back video frames
|
|
|
|
in real time. How cool is that? It means that you can use KittyCAD
|
2023-08-31 16:08:15 -04:00
|
|
|
Modeling App (or whatever you want to build) on any device, even a
|
|
|
|
cheap laptop with no graphics card!
|
2023-07-25 10:40:26 -04:00
|
|
|
</p>
|
|
|
|
<div className="flex justify-between mt-6">
|
|
|
|
<ActionButton
|
2023-08-15 21:56:24 -04:00
|
|
|
Element="button"
|
2023-08-18 10:27:01 -04:00
|
|
|
onClick={() => dismiss('../../')}
|
2023-07-25 10:40:26 -04:00
|
|
|
icon={{
|
|
|
|
icon: faXmark,
|
|
|
|
bgClassName: 'bg-destroy-80',
|
|
|
|
iconClassName:
|
|
|
|
'text-destroy-20 group-hover:text-destroy-10 hover:text-destroy-10',
|
|
|
|
}}
|
|
|
|
className="hover:border-destroy-40"
|
|
|
|
>
|
|
|
|
Dismiss
|
|
|
|
</ActionButton>
|
2023-08-15 21:56:24 -04:00
|
|
|
<ActionButton
|
|
|
|
Element="button"
|
|
|
|
onClick={next}
|
|
|
|
icon={{ icon: faArrowRight }}
|
|
|
|
>
|
2023-07-25 10:40:26 -04:00
|
|
|
Next: Sketching
|
|
|
|
</ActionButton>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|