import { AnimateSharedLayout, motion, useAnimation } from 'framer-motion'; import { useState } from 'react'; const typing = (line: string, delay: number = 0): any[] => Array.from(line).map((char, index) => ( {char} )); export function NpxCreateNxWorkspaceAnimation({ restartFunction, }: { restartFunction: () => void; }) { const npxCreateNxWorkspace = useAnimation(); const wrapper = useAnimation(); const firstLoading = useAnimation(); const frameworkSelectionTitle = useAnimation(); const frameworkSelectionAnswerSection = useAnimation(); const frameworkSelectionAnswerSectionArrow = useAnimation(); const frameworkSelectionAnswerSectionPreviousHighlight = useAnimation(); const frameworkSelectionAnswerSectionNextHighlight = useAnimation(); const frameworkSelectionAnswerValidation = useAnimation(); const applicationName = useAnimation(); const stylesheetSelectionTitle = useAnimation(); const stylesheetSelectionAnswerSection = useAnimation(); const stylesheetSelectionAnswerSectionArrow = useAnimation(); const stylesheetSelectionAnswerSectionPreviousHighlight = useAnimation(); const stylesheetSelectionAnswerSectionNextHighlight = useAnimation(); const stylesheetSelectionAnswerValidation = useAnimation(); const nxCloudSelectionTitle = useAnimation(); const nxCloudSelectionAnswerSection = useAnimation(); const nxCloudSelectionAnswerSectionArrow = useAnimation(); const nxCloudSelectionAnswerSectionPreviousHighlight = useAnimation(); const nxCloudSelectionAnswerSectionNextHighlight = useAnimation(); const nxCloudSelectionAnswerValidation = useAnimation(); const creatingNxWorkspace = useAnimation(); const creatingNxWorkspace2 = useAnimation(); const secondLoading = useAnimation(); const workpaceReady = useAnimation(); const restartButton = useAnimation(); const sequence = async () => { await npxCreateNxWorkspace.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.12, }, }); await firstLoading.start({ width: '100%', transition: { delay: 2.4, ease: 'easeOut', duration: 0.24 }, }); await frameworkSelectionSequence(); await applicationName.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.2, }, }); await stylesheetSelectionSequence(1.8); await nxCloudSelectionSequence(); await creatingNxWorkspace.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.2, }, }); await creatingNxWorkspace2.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.2, }, }); await secondLoading.start({ width: '100%', transition: { ease: 'easeOut', duration: 0.24 }, }); workpaceReady.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.24 }, }); await wrapper.start({ y: -32, transition: { ease: 'easeOut', duration: 0.24 }, }); return await restartButton.start({ y: 0, transition: { ease: 'easeOut', duration: 0.24 }, }); }; const frameworkSelectionSequence = async (delay: number = 0) => { await frameworkSelectionTitle.start({ opacity: 1, transition: { ease: 'easeOut', delay, duration: 0.2, }, }); await frameworkSelectionAnswerSection.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.12, }, }); await frameworkSelectionAnswerSectionArrow.start({ y: 54, transition: { ease: 'easeOut', duration: 0.24 }, }); await frameworkSelectionAnswerSectionPreviousHighlight.start({ color: '#E5E7EB', transition: { ease: 'easeOut', duration: 0.12 }, }); await frameworkSelectionAnswerSectionNextHighlight.start({ color: '#34D399', transition: { ease: 'easeOut', duration: 0.12 }, }); await frameworkSelectionAnswerSection.start({ opacity: 0, transition: { delay: 2, ease: 'easeOut', duration: 0.12, }, transitionEnd: { display: 'none', }, }); return frameworkSelectionAnswerValidation.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.24 }, }); }; const stylesheetSelectionSequence = async (delay: number = 0) => { await stylesheetSelectionTitle.start({ opacity: 1, transition: { delay, ease: 'easeOut', duration: 0.2, }, }); await stylesheetSelectionAnswerSection.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.12, }, }); await stylesheetSelectionAnswerSectionArrow.start({ y: 72, transition: { ease: 'easeOut', duration: 0.42 }, }); await stylesheetSelectionAnswerSectionPreviousHighlight.start({ color: '#E5E7EB', transition: { ease: 'easeOut', duration: 0.12 }, }); await stylesheetSelectionAnswerSectionNextHighlight.start({ color: '#34D399', transition: { ease: 'easeOut', duration: 0.12 }, }); await stylesheetSelectionAnswerSection.start({ opacity: 0, transition: { delay: 2, ease: 'easeOut', duration: 0.12, }, transitionEnd: { display: 'none', }, }); return stylesheetSelectionAnswerValidation.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.24 }, }); }; const nxCloudSelectionSequence = async (delay: number = 0) => { await nxCloudSelectionTitle.start({ opacity: 1, transition: { delay, ease: 'easeOut', duration: 0.2, }, }); await nxCloudSelectionAnswerSection.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.12, }, }); await nxCloudSelectionAnswerSectionArrow.start({ y: 0, transition: { ease: 'easeOut', duration: 0.24 }, }); await nxCloudSelectionAnswerSectionPreviousHighlight.start({ color: '#E5E7EB', transition: { ease: 'easeOut', duration: 0.12 }, }); await nxCloudSelectionAnswerSectionNextHighlight.start({ color: '#34D399', transition: { ease: 'easeOut', duration: 0.12 }, }); await nxCloudSelectionAnswerSection.start({ opacity: 0, transition: { delay: 2, ease: 'easeOut', duration: 0.12, }, transitionEnd: { display: 'none', }, }); return nxCloudSelectionAnswerValidation.start({ opacity: 1, transition: { ease: 'easeOut', duration: 0.24 }, }); }; sequence(); return ( <>
/workspace ➜ {typing('npx create-nx-workspace ludicrous-narwhals').map( (x) => x )}
{/*LOADING*/} {/*FRAMEWORK SELECTION*/} What to create in the new workspace{' '} react [a workspace with a single React application] {/*SELECTION ARROW*/} apps{' '} [an empty workspace with no plugins with a layout that works best for building apps]
core{' '} [an empty workspace with no plugins set up to publish npm packages (similar to yarn workspaces)]
ts{' '} [an empty workspace with the JS/TS plugin preinstalled]
react{' '} [a workspace with a single React application]
angular{' '} [a workspace with a single Angular application]
next.js{' '} [a workspace with a single Next.js application]
gatsby{' '} [a workspace with a single Gatsby application]
nest{' '} [a workspace with a single Nest application]
express{' '} [a workspace with a single Express application]
web components{' '} [a workspace with a single app built using web components]
react-native{' '} [a workspace with a single React Native application]
react-express{' '} [a workspace with a full stack application (React + Express)]
angular-nest{' '} [a workspace with a full stack application (Angular + Nest)]
(Use arrow keys)
{/*APPLICATION NAME*/} Application name{' '} {typing('tuxboard', 7).map((x) => x)} {/*STYLESHEET FORMAT*/} Default stylesheet format{' '} styled-components [ https://styled-components.com ] {/*SELECTION ARROW*/} CSS
SASS(.scss) [ https://sass-lang.com ]
Stylus(.styl)[ https://stylus-lang.com ]
LESS [ https://lesscss.org ]
styled-components [ https://styled-components.com ]
emotion [ https://emotion.sh ]
styled-jsx [ https://www.npmjs.com/package/styled-jsx ]
(Use arrow keys)
{/*NX CLOUD*/} Use Nx Cloud? (It's free and doesn't require registration.){' '} Yes {/*SELECTION ARROW*/} Yes
No
(Use arrow keys)
{/*CREATING NX WORKSPACE*/} NX Nx is creating your workspace. To make sure the command works reliably in all environments, and that the preset is applied correctly, Nx will run "yarn install" several times. Please wait. Creating your workspace {/*LOADING*/} {/*NX WORKSPACE CREATED*/}
NX SUCCESS {' '} Nx has successfully created the workspace.
NX NOTE {' '} First time using Nx? Check out this interactive Nx tutorial.
https://nx.dev/react/tutorial/01-create-application
Prefer watching videos? Check out this free Nx course on Egghead.io.
https://egghead.io/playlists/scale-react-development-with-nx-4038
); } export function NpxCreateNxWorkspace() { const [isDisplayed, setIsDisplayed] = useState(true); const restart = () => { setIsDisplayed(false); setTimeout(() => { setIsDisplayed(true); }); }; return ( <> {isDisplayed ? ( ) : (
)} ); } export default NpxCreateNxWorkspace;