@undp/create-app 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -5
- package/bin/generateFiles/generateIndexHtml.js +18 -0
- package/bin/generateFiles/generatePackageJson.js +160 -0
- package/bin/{generateTemplates/templates/configFiles/vite.config.ts.txt → generateFiles/generateViteConfig.js} +14 -12
- package/bin/generateFiles/index.js +3 -0
- package/bin/generateFiles.js +41 -1
- package/bin/index.js +38 -14
- package/bin/promptUser.js +60 -37
- package/bin/templates/next/withDataViz/auth/README.md +108 -0
- package/bin/templates/next/withDataViz/auth/app/about/page.tsx +33 -0
- package/bin/templates/next/withDataViz/auth/app/api/auth/[...all]/route.ts +5 -0
- package/bin/templates/next/withDataViz/auth/app/favicon.ico +0 -0
- package/bin/templates/next/withDataViz/auth/app/globals.css +3 -0
- package/bin/templates/next/withDataViz/auth/app/layout.tsx +30 -0
- package/bin/templates/next/withDataViz/auth/app/login/page.tsx +45 -0
- package/bin/templates/next/withDataViz/auth/app/page.tsx +33 -0
- package/bin/templates/next/withDataViz/auth/app/user/page.tsx +86 -0
- package/bin/templates/next/withDataViz/auth/components/Footer.tsx +16 -0
- package/bin/templates/next/withDataViz/auth/components/Header.tsx +56 -0
- package/bin/templates/next/withDataViz/auth/eslint.config.mjs +103 -0
- package/bin/templates/next/withDataViz/auth/lib/auth-client.ts +7 -0
- package/bin/templates/next/withDataViz/auth/lib/auth.ts +30 -0
- package/bin/templates/next/withDataViz/auth/next.config.ts +10 -0
- package/bin/templates/next/withDataViz/auth/postcss.config.mjs +7 -0
- package/bin/templates/next/withDataViz/auth/public/next.svg +1 -0
- package/bin/templates/next/withDataViz/auth/tsconfig.json +34 -0
- package/bin/templates/next/withDataViz/basic/.prettierrc +10 -0
- package/bin/templates/next/withDataViz/basic/README.md +56 -0
- package/bin/templates/next/withDataViz/basic/app/about/page.tsx +33 -0
- package/bin/templates/next/withDataViz/basic/app/favicon.ico +0 -0
- package/bin/templates/next/withDataViz/basic/app/globals.css +3 -0
- package/bin/templates/next/withDataViz/basic/app/layout.tsx +31 -0
- package/bin/templates/next/withDataViz/basic/app/page.tsx +33 -0
- package/bin/templates/next/withDataViz/basic/components/Footer.tsx +16 -0
- package/bin/templates/next/withDataViz/basic/components/Header.tsx +27 -0
- package/bin/templates/next/withDataViz/basic/eslint.config.mjs +103 -0
- package/bin/templates/next/withDataViz/basic/next.config.ts +7 -0
- package/bin/templates/next/withDataViz/basic/postcss.config.mjs +7 -0
- package/bin/templates/next/withDataViz/basic/public/next.svg +1 -0
- package/bin/templates/next/withDataViz/basic/public/undp-logo-blue.svg +1 -0
- package/bin/templates/next/withDataViz/basic/tailwind.config.js +7 -0
- package/bin/templates/next/withDataViz/basic/tsconfig.json +34 -0
- package/bin/templates/next/withoutDataViz/auth/.prettierrc +10 -0
- package/bin/templates/next/withoutDataViz/auth/README.md +107 -0
- package/bin/templates/next/withoutDataViz/auth/app/about/page.tsx +33 -0
- package/bin/templates/next/withoutDataViz/auth/app/api/auth/[...all]/route.ts +5 -0
- package/bin/templates/next/withoutDataViz/auth/app/favicon.ico +0 -0
- package/bin/templates/next/withoutDataViz/auth/app/globals.css +3 -0
- package/bin/templates/next/withoutDataViz/auth/app/layout.tsx +30 -0
- package/bin/templates/next/withoutDataViz/auth/app/login/page.tsx +45 -0
- package/bin/templates/next/withoutDataViz/auth/app/page.tsx +33 -0
- package/bin/templates/next/withoutDataViz/auth/app/user/page.tsx +86 -0
- package/bin/templates/next/withoutDataViz/auth/components/Footer.tsx +16 -0
- package/bin/templates/next/withoutDataViz/auth/components/Header.tsx +56 -0
- package/bin/templates/next/withoutDataViz/auth/eslint.config.mjs +103 -0
- package/bin/templates/next/withoutDataViz/auth/lib/auth-client.ts +7 -0
- package/bin/templates/next/withoutDataViz/auth/lib/auth.ts +30 -0
- package/bin/templates/next/withoutDataViz/auth/next.config.ts +10 -0
- package/bin/templates/next/withoutDataViz/auth/postcss.config.mjs +7 -0
- package/bin/templates/next/withoutDataViz/auth/public/next.svg +1 -0
- package/bin/templates/next/withoutDataViz/auth/public/undp-logo-blue.svg +1 -0
- package/bin/templates/next/withoutDataViz/auth/tailwind.config.js +7 -0
- package/bin/templates/next/withoutDataViz/auth/tsconfig.json +34 -0
- package/bin/templates/next/withoutDataViz/basic/.prettierrc +10 -0
- package/bin/templates/next/withoutDataViz/basic/README.md +55 -0
- package/bin/templates/next/withoutDataViz/basic/app/about/page.tsx +33 -0
- package/bin/templates/next/withoutDataViz/basic/app/favicon.ico +0 -0
- package/bin/templates/next/withoutDataViz/basic/app/globals.css +3 -0
- package/bin/templates/next/withoutDataViz/basic/app/layout.tsx +31 -0
- package/bin/templates/next/withoutDataViz/basic/app/page.tsx +33 -0
- package/bin/templates/next/withoutDataViz/basic/components/Footer.tsx +16 -0
- package/bin/templates/next/withoutDataViz/basic/components/Header.tsx +27 -0
- package/bin/templates/next/withoutDataViz/basic/eslint.config.mjs +103 -0
- package/bin/templates/next/withoutDataViz/basic/next.config.ts +7 -0
- package/bin/templates/next/withoutDataViz/basic/postcss.config.mjs +7 -0
- package/bin/templates/next/withoutDataViz/basic/public/next.svg +1 -0
- package/bin/templates/next/withoutDataViz/basic/public/undp-logo-blue.svg +1 -0
- package/bin/templates/next/withoutDataViz/basic/tailwind.config.js +7 -0
- package/bin/templates/next/withoutDataViz/basic/tsconfig.json +34 -0
- package/bin/templates/vite/withDataViz/basic/.prettierrc +10 -0
- package/bin/templates/vite/withDataViz/basic/README.md +76 -0
- package/bin/{generateTemplates/generateIndexHtml.js → templates/vite/withDataViz/basic/index.html} +3 -5
- package/bin/templates/vite/withDataViz/basic/public/favicon.ico +0 -0
- package/bin/templates/vite/withDataViz/basic/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withDataViz/basic/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withDataViz/basic/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/basic/src/App.tsx +38 -0
- package/bin/templates/vite/withDataViz/basic/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/basic/src/components/Footer.tsx +14 -0
- package/bin/{generateTemplates/templates/router/components/Header.txt → templates/vite/withDataViz/basic/src/components/Header.tsx} +8 -12
- package/bin/templates/vite/withDataViz/basic/src/styles/style.css +4 -0
- package/bin/templates/vite/withDataViz/basic/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withDataViz/basic/tailwind.config.js +7 -0
- package/bin/{generateTemplates/templates/configFiles → templates/vite/withDataViz/basic}/tsconfig.json +1 -1
- package/bin/{generateTemplates/templates/configFiles/viteWithoutPostCss.config.ts.txt → templates/vite/withDataViz/basic/vite.config.ts} +17 -1
- package/bin/templates/vite/withDataViz/query/.prettierrc +10 -0
- package/bin/templates/vite/withDataViz/query/README.md +80 -0
- package/bin/templates/vite/withDataViz/query/eslint.config.mjs +97 -0
- package/bin/templates/vite/withDataViz/query/index.html +13 -0
- package/bin/templates/vite/withDataViz/query/public/favicon.ico +0 -0
- package/bin/templates/vite/withDataViz/query/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withDataViz/query/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withDataViz/query/public/imgs/logo-color-600.png +0 -0
- package/bin/templates/vite/withDataViz/query/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/query/src/App.tsx +70 -0
- package/bin/templates/vite/withDataViz/query/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/query/src/components/Footer.tsx +14 -0
- package/bin/templates/vite/withDataViz/query/src/components/Header.tsx +25 -0
- package/bin/templates/vite/withDataViz/query/src/integration/tanstack-query.tsx +27 -0
- package/bin/templates/vite/withDataViz/query/src/main.tsx +21 -0
- package/bin/templates/vite/withDataViz/query/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withDataViz/query/src/styles/style.css +4 -0
- package/bin/templates/vite/withDataViz/query/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withDataViz/query/tailwind.config.js +7 -0
- package/bin/templates/vite/withDataViz/query/tsconfig.json +29 -0
- package/bin/templates/vite/withDataViz/query/tsconfig.node.json +9 -0
- package/bin/templates/vite/withDataViz/query/vite.config.ts +75 -0
- package/bin/templates/vite/withDataViz/query+router/.prettierrc +10 -0
- package/bin/templates/vite/withDataViz/query+router/README.md +112 -0
- package/bin/templates/vite/withDataViz/query+router/eslint.config.mjs +97 -0
- package/bin/templates/vite/withDataViz/query+router/index.html +13 -0
- package/bin/templates/vite/withDataViz/query+router/public/favicon.ico +0 -0
- package/bin/templates/vite/withDataViz/query+router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withDataViz/query+router/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withDataViz/query+router/public/imgs/logo-color-600.png +0 -0
- package/bin/templates/vite/withDataViz/query+router/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/query+router/src/App.tsx +42 -0
- package/bin/templates/vite/withDataViz/query+router/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/query+router/src/components/Footer.tsx +14 -0
- package/bin/{generateTemplates/templates/router+query/components/Header.txt → templates/vite/withDataViz/query+router/src/components/Header.tsx} +8 -12
- package/bin/{generateTemplates/templates/router+query/integration/tanstack-query.txt → templates/vite/withDataViz/query+router/src/integration/tanstack-query.tsx} +5 -5
- package/bin/{generateTemplates/templates/router+query/main.txt → templates/vite/withDataViz/query+router/src/main.tsx} +15 -11
- package/bin/templates/vite/withDataViz/query+router/src/routes/queryDemo.tsx +73 -0
- package/bin/templates/vite/withDataViz/query+router/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withDataViz/query+router/src/styles/style.css +4 -0
- package/bin/templates/vite/withDataViz/query+router/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withDataViz/query+router/tailwind.config.js +7 -0
- package/bin/templates/vite/withDataViz/query+router/tsconfig.json +29 -0
- package/bin/templates/vite/withDataViz/query+router/tsconfig.node.json +9 -0
- package/bin/templates/vite/withDataViz/query+router/vite.config.ts +75 -0
- package/bin/templates/vite/withDataViz/router/.prettierrc +10 -0
- package/bin/templates/vite/withDataViz/router/README.md +107 -0
- package/bin/templates/vite/withDataViz/router/eslint.config.mjs +97 -0
- package/bin/templates/vite/withDataViz/router/index.html +13 -0
- package/bin/templates/vite/withDataViz/router/public/favicon.ico +0 -0
- package/bin/templates/vite/withDataViz/router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withDataViz/router/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withDataViz/router/public/imgs/logo-color-600.png +0 -0
- package/bin/templates/vite/withDataViz/router/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/router/src/App.tsx +51 -0
- package/bin/templates/vite/withDataViz/router/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withDataViz/router/src/components/Footer.tsx +14 -0
- package/bin/templates/vite/withDataViz/router/src/components/Header.tsx +25 -0
- package/bin/{generateTemplates/templates/router/main.txt → templates/vite/withDataViz/router/src/main.tsx} +18 -12
- package/bin/templates/vite/withDataViz/router/src/routes/about.tsx +73 -0
- package/bin/templates/vite/withDataViz/router/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withDataViz/router/src/styles/style.css +4 -0
- package/bin/templates/vite/withDataViz/router/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withDataViz/router/tailwind.config.js +7 -0
- package/bin/templates/vite/withDataViz/router/tsconfig.json +29 -0
- package/bin/templates/vite/withDataViz/router/tsconfig.node.json +9 -0
- package/bin/templates/vite/withDataViz/router/vite.config.ts +75 -0
- package/bin/templates/vite/withoutDataViz/basic/.prettierrc +10 -0
- package/bin/templates/vite/withoutDataViz/basic/README.md +75 -0
- package/bin/templates/vite/withoutDataViz/basic/eslint.config.mjs +97 -0
- package/bin/templates/vite/withoutDataViz/basic/index.html +13 -0
- package/bin/templates/vite/withoutDataViz/basic/public/favicon.ico +0 -0
- package/bin/templates/vite/withoutDataViz/basic/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withoutDataViz/basic/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withoutDataViz/basic/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/basic/src/App.tsx +38 -0
- package/bin/templates/vite/withoutDataViz/basic/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/basic/src/components/Footer.tsx +14 -0
- package/bin/templates/vite/withoutDataViz/basic/src/components/Header.tsx +25 -0
- package/bin/templates/vite/withoutDataViz/basic/src/main.tsx +10 -0
- package/bin/templates/vite/withoutDataViz/basic/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withoutDataViz/basic/src/styles/style.css +3 -0
- package/bin/templates/vite/withoutDataViz/basic/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withoutDataViz/basic/tailwind.config.js +7 -0
- package/bin/templates/vite/withoutDataViz/basic/tsconfig.json +29 -0
- package/bin/templates/vite/withoutDataViz/basic/tsconfig.node.json +9 -0
- package/bin/templates/vite/withoutDataViz/basic/vite.config.ts +75 -0
- package/bin/templates/vite/withoutDataViz/query/.prettierrc +10 -0
- package/bin/templates/vite/withoutDataViz/query/README.md +80 -0
- package/bin/templates/vite/withoutDataViz/query/eslint.config.mjs +97 -0
- package/bin/templates/vite/withoutDataViz/query/index.html +13 -0
- package/bin/templates/vite/withoutDataViz/query/public/favicon.ico +0 -0
- package/bin/templates/vite/withoutDataViz/query/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withoutDataViz/query/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withoutDataViz/query/public/imgs/logo-color-600.png +0 -0
- package/bin/templates/vite/withoutDataViz/query/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/query/src/App.tsx +70 -0
- package/bin/templates/vite/withoutDataViz/query/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/query/src/components/Footer.tsx +14 -0
- package/bin/templates/vite/withoutDataViz/query/src/components/Header.tsx +25 -0
- package/bin/templates/vite/withoutDataViz/query/src/integration/tanstack-query.tsx +27 -0
- package/bin/templates/vite/withoutDataViz/query/src/main.tsx +21 -0
- package/bin/templates/vite/withoutDataViz/query/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withoutDataViz/query/src/styles/style.css +3 -0
- package/bin/templates/vite/withoutDataViz/query/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withoutDataViz/query/tailwind.config.js +7 -0
- package/bin/templates/vite/withoutDataViz/query/tsconfig.json +29 -0
- package/bin/templates/vite/withoutDataViz/query/tsconfig.node.json +9 -0
- package/bin/templates/vite/withoutDataViz/query/vite.config.ts +75 -0
- package/bin/templates/vite/withoutDataViz/query+router/.prettierrc +10 -0
- package/bin/templates/vite/withoutDataViz/query+router/README.md +111 -0
- package/bin/templates/vite/withoutDataViz/query+router/eslint.config.mjs +97 -0
- package/bin/templates/vite/withoutDataViz/query+router/index.html +13 -0
- package/bin/templates/vite/withoutDataViz/query+router/public/favicon.ico +0 -0
- package/bin/templates/vite/withoutDataViz/query+router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withoutDataViz/query+router/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withoutDataViz/query+router/public/imgs/logo-color-600.png +0 -0
- package/bin/templates/vite/withoutDataViz/query+router/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/App.tsx +42 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/components/Footer.tsx +14 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/components/Header.tsx +25 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/integration/tanstack-query.tsx +27 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/main.tsx +73 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/routes/queryDemo.tsx +73 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/styles/style.css +3 -0
- package/bin/templates/vite/withoutDataViz/query+router/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withoutDataViz/query+router/tailwind.config.js +7 -0
- package/bin/templates/vite/withoutDataViz/query+router/tsconfig.json +29 -0
- package/bin/templates/vite/withoutDataViz/query+router/tsconfig.node.json +9 -0
- package/bin/templates/vite/withoutDataViz/query+router/vite.config.ts +75 -0
- package/bin/templates/vite/withoutDataViz/router/.prettierrc +10 -0
- package/bin/templates/vite/withoutDataViz/router/README.md +106 -0
- package/bin/templates/vite/withoutDataViz/router/eslint.config.mjs +97 -0
- package/bin/templates/vite/withoutDataViz/router/index.html +13 -0
- package/bin/templates/vite/withoutDataViz/router/public/favicon.ico +0 -0
- package/bin/templates/vite/withoutDataViz/router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
- package/bin/templates/vite/withoutDataViz/router/public/imgs/Vitejs-logo.svg +15 -0
- package/bin/templates/vite/withoutDataViz/router/public/imgs/logo-color-600.png +0 -0
- package/bin/templates/vite/withoutDataViz/router/public/imgs/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/router/src/App.tsx +51 -0
- package/bin/templates/vite/withoutDataViz/router/src/assets/undp-logo-blue.svg +1 -0
- package/bin/templates/vite/withoutDataViz/router/src/components/Footer.tsx +14 -0
- package/bin/templates/vite/withoutDataViz/router/src/components/Header.tsx +25 -0
- package/bin/templates/vite/withoutDataViz/router/src/main.tsx +66 -0
- package/bin/templates/vite/withoutDataViz/router/src/routes/about.tsx +73 -0
- package/bin/templates/vite/withoutDataViz/router/src/styles/fonts.css +213 -0
- package/bin/templates/vite/withoutDataViz/router/src/styles/style.css +4 -0
- package/bin/templates/vite/withoutDataViz/router/src/vite-env.d.ts +1 -0
- package/bin/templates/vite/withoutDataViz/router/tailwind.config.js +7 -0
- package/bin/templates/vite/withoutDataViz/router/tsconfig.json +29 -0
- package/bin/templates/vite/withoutDataViz/router/tsconfig.node.json +9 -0
- package/bin/templates/vite/withoutDataViz/router/vite.config.ts +75 -0
- package/bin/utils/printSuccess.js +0 -9
- package/package.json +6 -2
- package/bin/generateTemplates/copyTemplate.js +0 -18
- package/bin/generateTemplates/generatePackageJson.js +0 -105
- package/bin/generateTemplates/generateReadme.js +0 -143
- package/bin/generateTemplates/generateStyleCss.js +0 -6
- package/bin/generateTemplates/index.js +0 -6
- package/bin/generateTemplates/templates/basic/App.txt +0 -32
- package/bin/generateTemplates/templates/basic/AppWithContainer.txt +0 -32
- package/bin/generateTemplates/templates/configFiles/staticwebapp.config.json +0 -44
- package/bin/generateTemplates/templates/configFiles/vite-env.txt +0 -1
- package/bin/generateTemplates/templates/query/App.txt +0 -57
- package/bin/generateTemplates/templates/query/AppWithContainer.txt +0 -67
- package/bin/generateTemplates/templates/query/main.txt +0 -29
- package/bin/generateTemplates/templates/router/App.txt +0 -30
- package/bin/generateTemplates/templates/router/components/Footer.txt +0 -20
- package/bin/generateTemplates/templates/router/routes/About.txt +0 -28
- package/bin/generateTemplates/templates/router+query/App.txt +0 -30
- package/bin/generateTemplates/templates/router+query/components/Footer.txt +0 -20
- package/bin/generateTemplates/templates/router+query/routes/queryDemo.txt +0 -56
- /package/bin/{generateTemplates/templates/configFiles → templates/next/withDataViz/auth}/.prettierrc +0 -0
- /package/bin/{generateTemplates/templates/configFiles/icon.txt → templates/next/withDataViz/auth/public/undp-logo-blue.svg} +0 -0
- /package/bin/{generateTemplates/templates/configFiles → templates/next/withDataViz/auth}/tailwind.config.js +0 -0
- /package/bin/{generateTemplates/templates/configFiles → templates/vite/withDataViz/basic}/eslint.config.mjs +0 -0
- /package/bin/{generateTemplates/templates/basic/main.txt → templates/vite/withDataViz/basic/src/main.tsx} +0 -0
- /package/bin/{generateTemplates/templates/css → templates/vite/withDataViz/basic/src/styles}/fonts.css +0 -0
- /package/bin/{generateTemplates/templates/configFiles → templates/vite/withDataViz/basic}/tsconfig.node.json +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createRoute } from '@tanstack/react-router';
|
|
2
|
+
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import type { AnyRootRoute } from '@tanstack/react-router';
|
|
4
|
+
import { Spinner } from '@undp/design-system-react/Spinner';
|
|
5
|
+
import { H6, P } from '@undp/design-system-react/Typography';
|
|
6
|
+
|
|
7
|
+
function useTodoData() {
|
|
8
|
+
return useQuery({
|
|
9
|
+
queryKey: ['todos'],
|
|
10
|
+
queryFn: () =>
|
|
11
|
+
Promise.resolve([
|
|
12
|
+
{ id: 1, name: 'Alice' },
|
|
13
|
+
{ id: 2, name: 'Bob' },
|
|
14
|
+
{ id: 3, name: 'Charlie' },
|
|
15
|
+
]),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function TanStackQueryDemo() {
|
|
20
|
+
const { data, isLoading, isError } = useTodoData();
|
|
21
|
+
|
|
22
|
+
if (isLoading) return <Spinner size='lg' className='my-20 m-auto' />;
|
|
23
|
+
|
|
24
|
+
if (isError) return <>Error</>;
|
|
25
|
+
return (
|
|
26
|
+
<>
|
|
27
|
+
<div className='flex gap-4 items-center justify-center my-8 mx-auto'>
|
|
28
|
+
<img
|
|
29
|
+
src='./imgs/Vitejs-logo.svg'
|
|
30
|
+
alt='vite logo'
|
|
31
|
+
width='72px'
|
|
32
|
+
style={{ marginLeft: 'auto', marginRight: 'auto' }}
|
|
33
|
+
/>
|
|
34
|
+
<P marginBottom='none'>&</P>
|
|
35
|
+
<img
|
|
36
|
+
src='./imgs/Tailwind_CSS_Logo.svg'
|
|
37
|
+
alt='tailwind logo'
|
|
38
|
+
width='72px'
|
|
39
|
+
style={{ marginLeft: 'auto', marginRight: 'auto' }}
|
|
40
|
+
/>
|
|
41
|
+
<P marginBottom='none'>&</P>
|
|
42
|
+
<img
|
|
43
|
+
src='./imgs/logo-color-600.png'
|
|
44
|
+
alt='tanstack logo'
|
|
45
|
+
width='72px'
|
|
46
|
+
style={{ marginLeft: 'auto', marginRight: 'auto' }}
|
|
47
|
+
/>
|
|
48
|
+
<P marginBottom='none'>&</P>
|
|
49
|
+
<img
|
|
50
|
+
src='./imgs/undp-logo-blue.svg'
|
|
51
|
+
alt='UNDP logo'
|
|
52
|
+
width='72px'
|
|
53
|
+
style={{ marginLeft: 'auto', marginRight: 'auto' }}
|
|
54
|
+
/>
|
|
55
|
+
</div>
|
|
56
|
+
<H6 marginBottom='xl' className='text-center'>
|
|
57
|
+
Data loaded successfully
|
|
58
|
+
<br />
|
|
59
|
+
<br />
|
|
60
|
+
{data?.length} elements in the query
|
|
61
|
+
</H6>
|
|
62
|
+
</>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
export default function createTanStackQueryDemoRoute(
|
|
66
|
+
parentRoute: AnyRootRoute,
|
|
67
|
+
) {
|
|
68
|
+
return createRoute({
|
|
69
|
+
path: '/query-demo',
|
|
70
|
+
component: TanStackQueryDemo,
|
|
71
|
+
getParentRoute: () => parentRoute,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-display: swap;
|
|
3
|
+
font-family: 'ProximaNova';
|
|
4
|
+
font-style: normal;
|
|
5
|
+
font-weight: 100;
|
|
6
|
+
src: url('./fonts/proximanova-thin-webfont.woff2') format('woff2');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@font-face {
|
|
10
|
+
font-display: swap;
|
|
11
|
+
font-family: 'ProximaNova';
|
|
12
|
+
font-style: italic;
|
|
13
|
+
font-weight: 100;
|
|
14
|
+
src: url('./fonts/proximanova-thinit-webfont.woff2') format('woff2');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@font-face {
|
|
18
|
+
font-display: swap;
|
|
19
|
+
font-family: 'ProximaNova';
|
|
20
|
+
font-style: normal;
|
|
21
|
+
font-weight: 200;
|
|
22
|
+
src: url('./fonts/proximanova-light-webfont.woff2') format('woff2');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@font-face {
|
|
26
|
+
font-display: swap;
|
|
27
|
+
font-family: 'ProximaNova';
|
|
28
|
+
font-style: italic;
|
|
29
|
+
font-weight: 200 300;
|
|
30
|
+
src: url('./fonts/proximanova-lightit-webfont.woff2') format('woff2');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@font-face {
|
|
34
|
+
font-display: swap;
|
|
35
|
+
font-family: 'ProximaNova';
|
|
36
|
+
font-style: normal;
|
|
37
|
+
font-weight: 400;
|
|
38
|
+
src: url('./fonts/proximanova-regular-webfont.woff2') format('woff2');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@font-face {
|
|
42
|
+
font-display: swap;
|
|
43
|
+
font-family: 'ProximaNova';
|
|
44
|
+
font-style: italic;
|
|
45
|
+
font-weight: 400;
|
|
46
|
+
src: url('./fonts/proximanova-regularit-webfont.woff2') format('woff2');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@font-face {
|
|
50
|
+
font-display: swap;
|
|
51
|
+
font-family: 'ProximaNova';
|
|
52
|
+
font-style: normal;
|
|
53
|
+
font-weight: 500;
|
|
54
|
+
src: url('./fonts/proximanova-medium-webfont.woff2') format('woff2');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@font-face {
|
|
58
|
+
font-display: swap;
|
|
59
|
+
font-family: 'ProximaNova';
|
|
60
|
+
font-style: italic;
|
|
61
|
+
font-weight: 500;
|
|
62
|
+
src: url('./fonts/proximanova-mediumit-webfont.woff2') format('woff2');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@font-face {
|
|
66
|
+
font-display: swap;
|
|
67
|
+
font-family: 'ProximaNova';
|
|
68
|
+
font-style: normal;
|
|
69
|
+
font-weight: 600;
|
|
70
|
+
src: url('./fonts/proximanova-semibold-webfont-2.woff2') format('woff2');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@font-face {
|
|
74
|
+
font-display: swap;
|
|
75
|
+
font-family: 'ProximaNova';
|
|
76
|
+
font-style: italic;
|
|
77
|
+
font-weight: 600;
|
|
78
|
+
src: url('./fonts/proximanova-semiboldit-webfont-2.woff2') format('woff2');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@font-face {
|
|
82
|
+
font-display: swap;
|
|
83
|
+
font-family: 'ProximaNova';
|
|
84
|
+
font-style: normal;
|
|
85
|
+
font-weight: 700;
|
|
86
|
+
src: url('./fonts/proximanova-bold-webfont.woff2') format('woff2');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@font-face {
|
|
90
|
+
font-display: swap;
|
|
91
|
+
font-family: 'ProximaNova';
|
|
92
|
+
font-style: italic;
|
|
93
|
+
font-weight: 700;
|
|
94
|
+
src: url('./fonts/proximanova-boldit-webfont.woff2') format('woff2');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@font-face {
|
|
98
|
+
font-display: swap;
|
|
99
|
+
font-family: 'ProximaNova';
|
|
100
|
+
font-style: normal;
|
|
101
|
+
font-weight: 800;
|
|
102
|
+
src: url('./fonts/proximanova-extrabold-webfont.woff2') format('woff2');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@font-face {
|
|
106
|
+
font-display: swap;
|
|
107
|
+
font-family: 'ProximaNova';
|
|
108
|
+
font-style: italic;
|
|
109
|
+
font-weight: 800;
|
|
110
|
+
src: url('./fonts/proximanova-extraboldit-webfont.woff2') format('woff2');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@font-face {
|
|
114
|
+
font-display: swap;
|
|
115
|
+
font-family: 'ProximaNova';
|
|
116
|
+
font-style: normal;
|
|
117
|
+
font-weight: 900;
|
|
118
|
+
src: url('./fonts/proximanova-black-webfont.woff2') format('woff2');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@font-face {
|
|
122
|
+
font-display: swap;
|
|
123
|
+
font-family: 'ProximaNova';
|
|
124
|
+
font-style: italic;
|
|
125
|
+
font-weight: 900;
|
|
126
|
+
src: url('./fonts/proximanova-blackit-webfont.woff2') format('woff2');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* SohneBreit */
|
|
130
|
+
@font-face {
|
|
131
|
+
font-display: swap;
|
|
132
|
+
font-family: 'SohneBreit';
|
|
133
|
+
font-style: normal;
|
|
134
|
+
font-weight: 100 700;
|
|
135
|
+
src: url('./fonts/soehne-breit-web-dreiviertelfett.woff2') format('woff2');
|
|
136
|
+
unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2070-209F;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@font-face {
|
|
140
|
+
font-display: swap;
|
|
141
|
+
font-family: 'SohneBreit';
|
|
142
|
+
font-style: italic;
|
|
143
|
+
font-weight: 100 700;
|
|
144
|
+
src: url('./fonts/soehne-breit-web-dreiviertelfett-kursiv.woff2')
|
|
145
|
+
format('woff2');
|
|
146
|
+
unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2070-209F;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@font-face {
|
|
150
|
+
font-display: swap;
|
|
151
|
+
font-family: 'SohneBreit';
|
|
152
|
+
font-style: normal;
|
|
153
|
+
font-weight: 800 900;
|
|
154
|
+
src: url('./fonts/soehne-breit-web-fett.woff2') format('woff2');
|
|
155
|
+
unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2070-209F;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@font-face {
|
|
159
|
+
font-display: swap;
|
|
160
|
+
font-family: 'SohneBreit';
|
|
161
|
+
font-style: italic;
|
|
162
|
+
font-weight: 800 900;
|
|
163
|
+
src: url('./fonts/soehne-breit-web-fett-kursiv.woff2') format('woff2');
|
|
164
|
+
unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-20CF;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
@font-face {
|
|
168
|
+
font-display: swap;
|
|
169
|
+
font-family: 'UNBangla';
|
|
170
|
+
font-style: normal;
|
|
171
|
+
font-weight: 100 300;
|
|
172
|
+
src: url('./fonts/UNBangla-Thin.woff2') format('woff2');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@font-face {
|
|
176
|
+
font-display: swap;
|
|
177
|
+
font-family: 'UNBangla';
|
|
178
|
+
font-style: italic;
|
|
179
|
+
font-weight: 100 300;
|
|
180
|
+
src: url('./fonts/UNBangla-ThinItalic.woff2') format('woff2');
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
@font-face {
|
|
184
|
+
font-display: swap;
|
|
185
|
+
font-family: 'UNBangla';
|
|
186
|
+
font-style: normal;
|
|
187
|
+
font-weight: 400;
|
|
188
|
+
src: url('./fonts/UNBangla-Regular.woff2') format('woff2');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@font-face {
|
|
192
|
+
font-display: swap;
|
|
193
|
+
font-family: 'UNBangla';
|
|
194
|
+
font-style: italic;
|
|
195
|
+
font-weight: 400;
|
|
196
|
+
src: url('./fonts/UNBangla-Italic.woff2') format('woff2');
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@font-face {
|
|
200
|
+
font-display: swap;
|
|
201
|
+
font-family: 'UNBangla';
|
|
202
|
+
font-style: normal;
|
|
203
|
+
font-weight: 500 900;
|
|
204
|
+
src: url('./fonts/UNBangla-Bold.woff2') format('woff2');
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
@font-face {
|
|
208
|
+
font-display: swap;
|
|
209
|
+
font-family: 'UNBangla';
|
|
210
|
+
font-style: italic;
|
|
211
|
+
font-weight: 500 900;
|
|
212
|
+
src: url('./fonts/UNBangla-BoldItalic.woff2') format('woff2');
|
|
213
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"allowImportingTsExtensions": true,
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"declarationMap": true,
|
|
7
|
+
"useDefineForClassFields": true,
|
|
8
|
+
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
|
9
|
+
"allowJs": false,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"esModuleInterop": false,
|
|
12
|
+
"allowSyntheticDefaultImports": true,
|
|
13
|
+
"strict": true,
|
|
14
|
+
"forceConsistentCasingInFileNames": true,
|
|
15
|
+
"module": "ESNext",
|
|
16
|
+
"moduleResolution": "bundler",
|
|
17
|
+
"resolveJsonModule": true,
|
|
18
|
+
"isolatedModules": true,
|
|
19
|
+
"noEmit": true,
|
|
20
|
+
"jsx": "react-jsx",
|
|
21
|
+
"baseUrl": ".",
|
|
22
|
+
"paths": {
|
|
23
|
+
"@/*": ["./src/*"]
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [],
|
|
27
|
+
"include": ["eslint.config.mjs", "src", "tailwind.config.js"],
|
|
28
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
|
29
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
3
|
+
import { defineConfig } from 'vite';
|
|
4
|
+
import react from '@vitejs/plugin-react';
|
|
5
|
+
import eslint from '@nabla/vite-plugin-eslint';
|
|
6
|
+
import { visualizer } from 'rollup-plugin-visualizer';
|
|
7
|
+
import postcssNested from 'postcss-nested';
|
|
8
|
+
import tailwindcss from '@tailwindcss/postcss';
|
|
9
|
+
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
|
10
|
+
|
|
11
|
+
export default defineConfig({
|
|
12
|
+
plugins: [
|
|
13
|
+
react({
|
|
14
|
+
babel: {
|
|
15
|
+
plugins: ['babel-plugin-react-compiler'],
|
|
16
|
+
},
|
|
17
|
+
}),
|
|
18
|
+
eslint(),
|
|
19
|
+
visualizer({ filename: 'stats.html', open: true }),
|
|
20
|
+
viteStaticCopy({
|
|
21
|
+
targets: [{ src: 'staticwebapp.config.json', dest: '' }],
|
|
22
|
+
}),
|
|
23
|
+
],
|
|
24
|
+
css: {
|
|
25
|
+
postcss: {
|
|
26
|
+
plugins: [
|
|
27
|
+
postcssNested(),
|
|
28
|
+
tailwindcss(),
|
|
29
|
+
{
|
|
30
|
+
postcssPlugin: 'move-media-queries-last', // If you want to reorder media queries to the end
|
|
31
|
+
OnceExit(root) {
|
|
32
|
+
const mediaQueries = [];
|
|
33
|
+
|
|
34
|
+
// Collect all media queries
|
|
35
|
+
root.walkAtRules('media', mediaRule => {
|
|
36
|
+
mediaQueries.push(mediaRule.clone());
|
|
37
|
+
mediaRule.remove();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Append them at the end
|
|
41
|
+
mediaQueries.forEach(mediaQuery => {
|
|
42
|
+
root.append(mediaQuery);
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
build: {
|
|
50
|
+
manifest: true,
|
|
51
|
+
cssCodeSplit: false,
|
|
52
|
+
rollupOptions: {
|
|
53
|
+
output: {
|
|
54
|
+
manualChunks(id) {
|
|
55
|
+
if (id.includes('node_modules/react')) return 'react';
|
|
56
|
+
if (id.includes('@undp/design-system-react')) return 'undp';
|
|
57
|
+
if (id.includes('@undp/data-viz')) return 'undp';
|
|
58
|
+
},
|
|
59
|
+
chunkFileNames: '[name]-[hash].js',
|
|
60
|
+
assetFileNames: '[name].[ext]',
|
|
61
|
+
entryFileNames: '[name].js',
|
|
62
|
+
},
|
|
63
|
+
treeshake: true,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
server: {
|
|
67
|
+
cors: {
|
|
68
|
+
origin: '*',
|
|
69
|
+
methods: ['GET'],
|
|
70
|
+
preflightContinue: false,
|
|
71
|
+
optionsSuccessStatus: 204,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
resolve: { alias: { '@': path.resolve(__dirname, './src') } },
|
|
75
|
+
});
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
This is a React + TypeScript + Vite project powered by Tailwind CSS, and the UNDP Design System, bootstrapped with [@undp/create-app](https://www.npmjs.com/package/@undp/create-app).
|
|
2
|
+
|
|
3
|
+
It includes:
|
|
4
|
+
* React 19.x with React compiler
|
|
5
|
+
* UNDP Design System
|
|
6
|
+
* Routing with [TanStack Router](https://tanstack.com/router)
|
|
7
|
+
* TailwindCSS
|
|
8
|
+
* Code linting and formatting via ESLint and Prettier
|
|
9
|
+
|
|
10
|
+
## 🧩 Installation
|
|
11
|
+
|
|
12
|
+
This project uses `npm`.
|
|
13
|
+
|
|
14
|
+
For installation you will need to install `node` and `npm`, if you don't already have it. `node` and `npm` can be installed from [here](https://nodejs.org/en/download/).
|
|
15
|
+
|
|
16
|
+
To install the project, simply run `npm install` in the project folder in the terminal on Mac or Command Prompt on Windows.
|
|
17
|
+
|
|
18
|
+
## 🚀 Local Development
|
|
19
|
+
|
|
20
|
+
To start the project locally:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run dev
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This is run the app in development mode. Open [http://localhost:5173/](http://localhost:5173/) to view it in the browser.
|
|
27
|
+
|
|
28
|
+
The page will reload if you make edits. You will also see any lint errors in the console.
|
|
29
|
+
|
|
30
|
+
## 📜 Available Scripts
|
|
31
|
+
|
|
32
|
+
- `npm run dev`: Executes `vite` and start the local server for local deployment.
|
|
33
|
+
- `npm run build`: Executes `tsc && vite build` and builds the app for production and deployment.
|
|
34
|
+
- `npm run preview`: Executes `vite preview` and serves the static build output (from vite build) locally.
|
|
35
|
+
- `npm run clean`: Executes `rimraf node_modules && rimraf dist && rimraf package-lock.json` and remove node_modules folder, dist folder and package-lock.json.
|
|
36
|
+
- `npm run lint`: Executes `npx eslint --fix && npx prettier . --write` and resolve all the linting and prettier errors.
|
|
37
|
+
|
|
38
|
+
## 🧰 Tooling Setup
|
|
39
|
+
|
|
40
|
+
This project uses ESLint integrated with Prettier to automatically format and lint your code.
|
|
41
|
+
|
|
42
|
+
If you’re using Visual Studio Code, install:
|
|
43
|
+
* [ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
|
44
|
+
* [Prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
|
|
45
|
+
|
|
46
|
+
Your editor should now show linting errors and automatically fix issues where possible.
|
|
47
|
+
|
|
48
|
+
More info: [ESLint Integrations](http://eslint.org/docs/user-guide/integrations)
|
|
49
|
+
|
|
50
|
+
## 🎨 Styling
|
|
51
|
+
|
|
52
|
+
This project uses [Tailwind CSS](https://tailwindcss.com/) for styling and and includes pre-configured design tokens from the UNDP Design System.
|
|
53
|
+
|
|
54
|
+
## 🧭 Routing
|
|
55
|
+
|
|
56
|
+
Routing is powered by [TanStack Router](https://tanstack.com/router) and uses a code-based configuration (in the `./src/main.tsx`).
|
|
57
|
+
|
|
58
|
+
### Adding A Route
|
|
59
|
+
|
|
60
|
+
Example: add an `/about` route:
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
const aboutRoute = createRoute({
|
|
64
|
+
getParentRoute: () => rootRoute,
|
|
65
|
+
path: "/about",
|
|
66
|
+
component: () => <h1>About</h1>,
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Then, register it in your `routeTree`:
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
const routeTree = rootRoute.addChildren([indexRoute, aboutRoute]);
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
You can define your component in another file:
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
import About from "./components/About.tsx";
|
|
80
|
+
|
|
81
|
+
const aboutRoute = createRoute({
|
|
82
|
+
getParentRoute: () => rootRoute,
|
|
83
|
+
path: "/about",
|
|
84
|
+
component: About,
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
More info: [Code Based Routing](https://tanstack.com/router/latest/docs/framework/react/guide/code-based-routing).
|
|
89
|
+
|
|
90
|
+
Now that you have two routes you can use a `Link` component to navigate between them.
|
|
91
|
+
|
|
92
|
+
### Adding Links
|
|
93
|
+
|
|
94
|
+
Use the `Link` component for client-side navigation:
|
|
95
|
+
|
|
96
|
+
```tsx
|
|
97
|
+
import { Link } from "@tanstack/react-router";
|
|
98
|
+
|
|
99
|
+
<Link to="/about">About</Link>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
More info: [Link documentation](https://tanstack.com/router/v1/docs/framework/react/api/router/linkComponent).
|
|
103
|
+
|
|
104
|
+
## 📬 Contact us
|
|
105
|
+
|
|
106
|
+
For questions or feedback, contact us at [data@undp.org](mailto:data@undp.org).
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import js from '@eslint/js';
|
|
2
|
+
import tseslint from 'typescript-eslint';
|
|
3
|
+
import pluginReact from 'eslint-plugin-react';
|
|
4
|
+
import reactHooks from 'eslint-plugin-react-hooks';
|
|
5
|
+
import importPlugin from 'eslint-plugin-import';
|
|
6
|
+
import jsxA11y from 'eslint-plugin-jsx-a11y';
|
|
7
|
+
import { defineConfig } from 'eslint/config';
|
|
8
|
+
import prettierConfig from 'eslint-config-prettier';
|
|
9
|
+
import prettierPlugin from 'eslint-plugin-prettier';
|
|
10
|
+
|
|
11
|
+
export default defineConfig([
|
|
12
|
+
{
|
|
13
|
+
ignores: [
|
|
14
|
+
'node_modules/**',
|
|
15
|
+
'build/**',
|
|
16
|
+
'public/**',
|
|
17
|
+
'dist/**',
|
|
18
|
+
'storybook-static/**',
|
|
19
|
+
'dist-ssr/**',
|
|
20
|
+
'coverage/**',
|
|
21
|
+
'**/*.test.js',
|
|
22
|
+
'**/__snapshots__/**',
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
js.configs.recommended,
|
|
26
|
+
reactHooks.configs.flat.recommended,
|
|
27
|
+
...tseslint.configs.recommended,
|
|
28
|
+
{
|
|
29
|
+
files: ['**/*.{js,mjs,cjs,ts,jsx,tsx,ts}'],
|
|
30
|
+
plugins: {
|
|
31
|
+
react: pluginReact,
|
|
32
|
+
'react-hooks': reactHooks,
|
|
33
|
+
import: importPlugin,
|
|
34
|
+
'jsx-a11y': jsxA11y,
|
|
35
|
+
prettier: prettierPlugin,
|
|
36
|
+
},
|
|
37
|
+
settings: {
|
|
38
|
+
react: {
|
|
39
|
+
version: 'detect',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
rules: {
|
|
43
|
+
// React rules
|
|
44
|
+
'react/self-closing-comp': ['error', { component: true, html: true }],
|
|
45
|
+
'react/react-in-jsx-scope': 'off',
|
|
46
|
+
'react/jsx-uses-react': 'off',
|
|
47
|
+
'react/jsx-uses-vars': 'warn',
|
|
48
|
+
'react/jsx-no-undef': 'error',
|
|
49
|
+
'react/jsx-curly-brace-presence': 'error',
|
|
50
|
+
'react/prop-types': 'off',
|
|
51
|
+
'react/require-default-props': 0,
|
|
52
|
+
'react/jsx-filename-extension': 0,
|
|
53
|
+
'react/no-array-index-key': 0,
|
|
54
|
+
'react/jsx-props-no-spreading': 0,
|
|
55
|
+
|
|
56
|
+
// TypeScript rules
|
|
57
|
+
'no-unused-vars': 'off',
|
|
58
|
+
'@typescript-eslint/no-unused-vars': [
|
|
59
|
+
'error',
|
|
60
|
+
{ argsIgnorePattern: '^_' },
|
|
61
|
+
],
|
|
62
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
63
|
+
|
|
64
|
+
// Import rules
|
|
65
|
+
'import/order': [
|
|
66
|
+
'warn',
|
|
67
|
+
{
|
|
68
|
+
groups: [
|
|
69
|
+
'builtin',
|
|
70
|
+
'external',
|
|
71
|
+
'internal',
|
|
72
|
+
'parent',
|
|
73
|
+
'sibling',
|
|
74
|
+
'index',
|
|
75
|
+
],
|
|
76
|
+
'newlines-between': 'always',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
'import/no-unresolved': 0,
|
|
80
|
+
'import/no-extraneous-dependencies': ['warn', { devDependencies: true }],
|
|
81
|
+
'import/extensions': 0,
|
|
82
|
+
'import/prefer-default-export': 0,
|
|
83
|
+
|
|
84
|
+
// A11y rules
|
|
85
|
+
'jsx-a11y/alt-text': 'warn',
|
|
86
|
+
'jsx-a11y/anchor-is-valid': 'warn',
|
|
87
|
+
|
|
88
|
+
// General rules
|
|
89
|
+
'prefer-const': 'error',
|
|
90
|
+
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
91
|
+
'no-debugger': 'warn',
|
|
92
|
+
'no-nested-ternary': 0,
|
|
93
|
+
'prettier/prettier': 'error',
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
prettierConfig,
|
|
97
|
+
]);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/undp-logo-blue.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>My Vite + Tailwind + UNDP App</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="root"></div>
|
|
11
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 54 33"><g clip-path="url(#prefix__clip0)"><path fill="#38bdf8" fill-rule="evenodd" d="M27 0c-7.2 0-11.7 3.6-13.5 10.8 2.7-3.6 5.85-4.95 9.45-4.05 2.054.513 3.522 2.004 5.147 3.653C30.744 13.09 33.808 16.2 40.5 16.2c7.2 0 11.7-3.6 13.5-10.8-2.7 3.6-5.85 4.95-9.45 4.05-2.054-.513-3.522-2.004-5.147-3.653C36.756 3.11 33.692 0 27 0zM13.5 16.2C6.3 16.2 1.8 19.8 0 27c2.7-3.6 5.85-4.95 9.45-4.05 2.054.514 3.522 2.004 5.147 3.653C17.244 29.29 20.308 32.4 27 32.4c7.2 0 11.7-3.6 13.5-10.8-2.7 3.6-5.85 4.95-9.45 4.05-2.054-.513-3.522-2.004-5.147-3.653C23.256 19.31 20.192 16.2 13.5 16.2z" clip-rule="evenodd"/></g><defs><clipPath id="prefix__clip0"><path fill="#fff" d="M0 0h54v32.4H0z"/></clipPath></defs></svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg width="410" height="404" viewBox="0 0 410 404" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M399.641 59.5246L215.643 388.545C211.844 395.338 202.084 395.378 198.228 388.618L10.5817 59.5563C6.38087 52.1896 12.6802 43.2665 21.0281 44.7586L205.223 77.6824C206.398 77.8924 207.601 77.8904 208.776 77.6763L389.119 44.8058C397.439 43.2894 403.768 52.1434 399.641 59.5246Z" fill="url(#paint0_linear)"/>
|
|
3
|
+
<path d="M292.965 1.5744L156.801 28.2552C154.563 28.6937 152.906 30.5903 152.771 32.8664L144.395 174.33C144.198 177.662 147.258 180.248 150.51 179.498L188.42 170.749C191.967 169.931 195.172 173.055 194.443 176.622L183.18 231.775C182.422 235.487 185.907 238.661 189.532 237.56L212.947 230.446C216.577 229.344 220.065 232.527 219.297 236.242L201.398 322.875C200.278 328.294 207.486 331.249 210.492 326.603L212.5 323.5L323.454 102.072C325.312 98.3645 322.108 94.137 318.036 94.9228L279.014 102.454C275.347 103.161 272.227 99.746 273.262 96.1583L298.731 7.86689C299.767 4.27314 296.636 0.855181 292.965 1.5744Z" fill="url(#paint1_linear)"/>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="paint0_linear" x1="6.00017" y1="32.9999" x2="235" y2="344" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop stop-color="#41D1FF"/>
|
|
7
|
+
<stop offset="1" stop-color="#BD34FE"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="paint1_linear" x1="194.651" y1="8.81818" x2="236.076" y2="292.989" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop stop-color="#FFEA83"/>
|
|
11
|
+
<stop offset="0.0833333" stop-color="#FFDD35"/>
|
|
12
|
+
<stop offset="1" stop-color="#FFA800"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
</defs>
|
|
15
|
+
</svg>
|