@undp/create-app 0.1.1 → 0.2.1
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 +31 -8
- package/bin/generateFiles/generateIndexHtml.js +18 -0
- package/bin/generateFiles/generatePackageJson.js +160 -0
- package/bin/{generateTemplates/templates/configFiles/staticwebapp.config.json → generateFiles/generateStaticWebAppConfig.js} +4 -1
- package/bin/{generateTemplates/templates/configFiles/vite.config.ts.txt → generateFiles/generateViteConfig.js} +14 -12
- package/bin/generateFiles/index.js +4 -0
- package/bin/index.js +46 -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/generateFiles.js +0 -65
- 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/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,56 @@
|
|
|
1
|
+
This is a Next.js project powered by Tailwind CSS, the UNDP Design System, and the UNDP Data Visualization Library, bootstrapped with [@undp/create-app](https://www.npmjs.com/package/@undp/create-app).
|
|
2
|
+
|
|
3
|
+
It includes:
|
|
4
|
+
* Next 16.x with React compiler
|
|
5
|
+
* UNDP Design System
|
|
6
|
+
* UNDP Data Visualization library
|
|
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:3000/](http://localhost:3000/) 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 `next dev` and start the local server for local deployment.
|
|
33
|
+
- `npm run build`: Executes `next build` and builds the app for production and deployment.
|
|
34
|
+
- `npm run preview`: Executes `next start` and serves the static build output locally.
|
|
35
|
+
- `npm run clean`: Executes `rimraf node_modules && rimraf .next && 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
|
+
## 📬 Contact us
|
|
55
|
+
|
|
56
|
+
For questions or feedback, contact us at [data@undp.org](mailto:data@undp.org).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { H6, P } from '@undp/design-system-react/Typography';
|
|
4
|
+
import Image from 'next/image';
|
|
5
|
+
|
|
6
|
+
export default function Home() {
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<div className='flex gap-4 items-center justify-center my-8 mx-auto'>
|
|
10
|
+
<Image
|
|
11
|
+
className='dark:invert'
|
|
12
|
+
src='/next.svg'
|
|
13
|
+
alt='Next.js logo'
|
|
14
|
+
width={100}
|
|
15
|
+
height={20}
|
|
16
|
+
priority
|
|
17
|
+
/>
|
|
18
|
+
<P marginBottom='none'>&</P>
|
|
19
|
+
<Image
|
|
20
|
+
className='dark:invert'
|
|
21
|
+
src='/undp-logo-blue.svg'
|
|
22
|
+
alt='UNDP logo'
|
|
23
|
+
width={40}
|
|
24
|
+
height={20}
|
|
25
|
+
priority
|
|
26
|
+
/>
|
|
27
|
+
</div>
|
|
28
|
+
<H6 marginBottom='xl' className='text-center'>
|
|
29
|
+
This is the about page.
|
|
30
|
+
</H6>
|
|
31
|
+
</>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Metadata } from 'next';
|
|
2
|
+
|
|
3
|
+
import HeaderEl from '@/components/Header';
|
|
4
|
+
import FooterEl from '@/components/Footer';
|
|
5
|
+
|
|
6
|
+
import './globals.css';
|
|
7
|
+
import '@undp/design-system-react/style.css';
|
|
8
|
+
import '@undp/data-viz/style.css';
|
|
9
|
+
|
|
10
|
+
export const metadata: Metadata = {
|
|
11
|
+
title: 'My Next + UNDP app',
|
|
12
|
+
description: 'Generated by create undp app',
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default function RootLayout({
|
|
16
|
+
children,
|
|
17
|
+
}: Readonly<{
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
}>) {
|
|
20
|
+
return (
|
|
21
|
+
<html lang='en'>
|
|
22
|
+
<body className='flex flex-col gap-0 min-h-screen'>
|
|
23
|
+
<HeaderEl />
|
|
24
|
+
<main className='grow-1 flex flex-col justify-center'>
|
|
25
|
+
<div className='flex flex-col justify-center'>{children}</div>
|
|
26
|
+
</main>
|
|
27
|
+
<FooterEl />
|
|
28
|
+
</body>
|
|
29
|
+
</html>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { H6, P } from '@undp/design-system-react/Typography';
|
|
4
|
+
import Image from 'next/image';
|
|
5
|
+
|
|
6
|
+
export default function Home() {
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<div className='flex gap-4 items-center justify-center my-8 mx-auto'>
|
|
10
|
+
<Image
|
|
11
|
+
className='dark:invert'
|
|
12
|
+
src='/next.svg'
|
|
13
|
+
alt='Next.js logo'
|
|
14
|
+
width={100}
|
|
15
|
+
height={20}
|
|
16
|
+
priority
|
|
17
|
+
/>
|
|
18
|
+
<P marginBottom='none'>&</P>
|
|
19
|
+
<Image
|
|
20
|
+
className='dark:invert'
|
|
21
|
+
src='/undp-logo-blue.svg'
|
|
22
|
+
alt='UNDP logo'
|
|
23
|
+
width={40}
|
|
24
|
+
height={20}
|
|
25
|
+
priority
|
|
26
|
+
/>
|
|
27
|
+
</div>
|
|
28
|
+
<H6 marginBottom='xl' className='text-center'>
|
|
29
|
+
To get started, edit the page.tsx file.
|
|
30
|
+
</H6>
|
|
31
|
+
</>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Footer,
|
|
5
|
+
FooterLogoUnit,
|
|
6
|
+
FooterCopyrightUnit,
|
|
7
|
+
} from '@undp/design-system-react/Footer';
|
|
8
|
+
|
|
9
|
+
export default function FooterEl() {
|
|
10
|
+
return (
|
|
11
|
+
<Footer>
|
|
12
|
+
<FooterLogoUnit>subscribe to email</FooterLogoUnit>
|
|
13
|
+
<FooterCopyrightUnit>Footnote can be added here</FooterCopyrightUnit>
|
|
14
|
+
</Footer>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Header,
|
|
5
|
+
HeaderLogoUnit,
|
|
6
|
+
HeaderMainNavUnit,
|
|
7
|
+
HeaderMenuUnit,
|
|
8
|
+
} from '@undp/design-system-react/Header';
|
|
9
|
+
import Link from 'next/link';
|
|
10
|
+
|
|
11
|
+
export default function HeaderEl() {
|
|
12
|
+
return (
|
|
13
|
+
<Header>
|
|
14
|
+
<HeaderLogoUnit
|
|
15
|
+
hyperlink='./'
|
|
16
|
+
siteName='Site name'
|
|
17
|
+
siteSubName='Sub-site name'
|
|
18
|
+
/>
|
|
19
|
+
<HeaderMainNavUnit>
|
|
20
|
+
<HeaderMenuUnit>
|
|
21
|
+
<Link href='/'>Home</Link>
|
|
22
|
+
<Link href='/about'>About</Link>
|
|
23
|
+
</HeaderMenuUnit>
|
|
24
|
+
</HeaderMainNavUnit>
|
|
25
|
+
</Header>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import nextVitals from 'eslint-config-next/core-web-vitals';
|
|
2
|
+
import nextTs from 'eslint-config-next/typescript';
|
|
3
|
+
import js from '@eslint/js';
|
|
4
|
+
import tseslint from 'typescript-eslint';
|
|
5
|
+
import pluginReact from 'eslint-plugin-react';
|
|
6
|
+
import reactHooks from 'eslint-plugin-react-hooks';
|
|
7
|
+
import importPlugin from 'eslint-plugin-import';
|
|
8
|
+
import { defineConfig } from 'eslint/config';
|
|
9
|
+
import prettierConfig from 'eslint-config-prettier';
|
|
10
|
+
import prettierPlugin from 'eslint-plugin-prettier';
|
|
11
|
+
|
|
12
|
+
export default defineConfig([
|
|
13
|
+
{
|
|
14
|
+
ignores: [
|
|
15
|
+
'node_modules/**',
|
|
16
|
+
'build/**',
|
|
17
|
+
'public/**',
|
|
18
|
+
'dist/**',
|
|
19
|
+
'storybook-static/**',
|
|
20
|
+
'dist-ssr/**',
|
|
21
|
+
'coverage/**',
|
|
22
|
+
'**/*.test.js',
|
|
23
|
+
'**/__snapshots__/**',
|
|
24
|
+
'.next/**',
|
|
25
|
+
'out/**',
|
|
26
|
+
'next-env.d.ts',
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
...nextVitals,
|
|
30
|
+
...nextTs,
|
|
31
|
+
js.configs.recommended,
|
|
32
|
+
reactHooks.configs.flat.recommended,
|
|
33
|
+
...tseslint.configs.recommended,
|
|
34
|
+
{
|
|
35
|
+
files: ['**/*.{js,mjs,cjs,ts,jsx,tsx,ts}'],
|
|
36
|
+
plugins: {
|
|
37
|
+
react: pluginReact,
|
|
38
|
+
'react-hooks': reactHooks,
|
|
39
|
+
import: importPlugin,
|
|
40
|
+
prettier: prettierPlugin,
|
|
41
|
+
},
|
|
42
|
+
settings: {
|
|
43
|
+
react: {
|
|
44
|
+
version: 'detect',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
rules: {
|
|
48
|
+
// React rules
|
|
49
|
+
'react/self-closing-comp': ['error', { component: true, html: true }],
|
|
50
|
+
'react/react-in-jsx-scope': 'off',
|
|
51
|
+
'react/jsx-uses-react': 'off',
|
|
52
|
+
'react/jsx-uses-vars': 'warn',
|
|
53
|
+
'react/jsx-no-undef': 'error',
|
|
54
|
+
'react/jsx-curly-brace-presence': 'error',
|
|
55
|
+
'react/prop-types': 'off',
|
|
56
|
+
'react/require-default-props': 0,
|
|
57
|
+
'react/jsx-filename-extension': 0,
|
|
58
|
+
'react/no-array-index-key': 0,
|
|
59
|
+
'react/jsx-props-no-spreading': 0,
|
|
60
|
+
|
|
61
|
+
// TypeScript rules
|
|
62
|
+
'no-unused-vars': 'off',
|
|
63
|
+
'@typescript-eslint/no-unused-vars': [
|
|
64
|
+
'error',
|
|
65
|
+
{ argsIgnorePattern: '^_' },
|
|
66
|
+
],
|
|
67
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
68
|
+
|
|
69
|
+
// Import rules
|
|
70
|
+
'import/order': [
|
|
71
|
+
'warn',
|
|
72
|
+
{
|
|
73
|
+
groups: [
|
|
74
|
+
'builtin',
|
|
75
|
+
'external',
|
|
76
|
+
'internal',
|
|
77
|
+
'parent',
|
|
78
|
+
'sibling',
|
|
79
|
+
'index',
|
|
80
|
+
],
|
|
81
|
+
'newlines-between': 'always',
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
'import/no-unresolved': 0,
|
|
85
|
+
'import/no-extraneous-dependencies': ['warn', { devDependencies: true }],
|
|
86
|
+
'import/extensions': 0,
|
|
87
|
+
'import/prefer-default-export': 0,
|
|
88
|
+
'import/no-anonymous-default-export': 0,
|
|
89
|
+
|
|
90
|
+
// A11y rules
|
|
91
|
+
'jsx-a11y/alt-text': 'warn',
|
|
92
|
+
'jsx-a11y/anchor-is-valid': 'warn',
|
|
93
|
+
|
|
94
|
+
// General rules
|
|
95
|
+
'prefer-const': 'error',
|
|
96
|
+
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
|
97
|
+
'no-debugger': 'warn',
|
|
98
|
+
'no-nested-ternary': 0,
|
|
99
|
+
'prettier/prettier': 'error',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
prettierConfig,
|
|
103
|
+
]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 60.8"><style>.st0{fill:#0468b1}.st1{fill:#fff}</style><path class="st0" d="M0 30.9h14.5v14.5H0z"/><path class="st1" d="M3.7 33.2v5.7c0 3 1.5 4.1 3.5 4.1 2.1 0 3.6-1.2 3.6-4.2v-5.7H9.6v5.8c0 2.1-1 3.1-2.4 3.1-1.3 0-2.3-.9-2.3-3.1v-5.7H3.7z"/><path class="st0" d="M15.4 30.9h14.5v14.5H15.4z"/><path class="st1" d="M20.2 43v-4.1c0-1.6 0-2.8-.1-4 .5 1.1 1.1 2.2 1.8 3.2L25 43h1.3v-9.6h-1.1v4.1c0 1.5 0 2.7.2 4-.4-1-1-2-1.7-3.2l-3.1-4.9h-1.4v9.7l1-.1z"/><path class="st0" d="M15.4 46.3h14.5v14.5H15.4z"/><path class="st1" d="M25.1 49.4c-.6-.5-1.5-.8-2.8-.8-1 0-1.8.1-2.4.2v9.6h1.2v-3.9c.3.1.6.1 1 .1 1.2 0 2.3-.4 2.9-1.1.5-.5.8-1.2.8-2.1.2-.8-.1-1.5-.7-2"/><path class="st0" d="M22.3 53.6c-.4 0-.8 0-1.1-.1v-3.7c.2 0 .6-.1 1.2-.1 1.4 0 2.3.6 2.3 1.9 0 1.3-.9 2-2.4 2M0 46.3h14.5v14.5H0z"/><path class="st1" d="M10.2 49.8c-.8-.8-2.1-1.2-3.9-1.2-1 0-1.9.1-2.7.2v9.6c.6.1 1.4.1 2.3.1 1.9 0 3.4-.5 4.3-1.4.9-.9 1.4-2.2 1.4-3.7 0-1.7-.5-2.8-1.4-3.6"/><path class="st0" d="M6.2 57.4c-.5 0-1 0-1.3-.1v-7.6c.3-.1.8-.2 1.5-.2 2.7 0 3.9 1.4 3.9 3.7 0 2.7-1.5 4.3-4.1 4.2M0 0h30v30H0z"/><path class="st1" d="M25.7 15.6c-.4.6-1 1.1-1.3 1.8 0-.5.1-1.1-.1-1.5-.3-1-.6-1.9-.7-3.1v-.4c.2 1.1 1.3 1.9 1.2 3.1 0 .3-.1.6-.2.8v-.1c.2-.6.2-1.2.5-1.8.4-.8.8-1.6.6-2.6.8 1.2.6 2.7 0 3.8"/><path class="st1" d="M25.1 9.4c.7 1 .9 2.5.3 3.6-.2.5-.3 1-.4 1.5 0-.1 0-.2-.1-.3-.2-1.1-1.3-1.9-1.7-2.8-.2-.3-.2-.6-.3-1.1.4.8 1.5 1.2 1.9 2.2.2.2.1.5.2.8-.2-1-.1-1.9 0-2.8 0-.5-.1-1-.3-1.4.1-.1.2.1.4.3"/><path class="st1" d="M24.6 9.2c.2.8-.1 1.6.1 2.5-.5-.9-1.4-1.3-2.1-2-.4-.4-.6-1-.6-1.5.4.9 1.4 1.1 2 1.9.2.2.2.4.4.6-.3-.7-.5-1.5-.6-2.4l-.6-.9c.6.2 1.2 1 1.4 1.8"/><path class="st1" d="M22.5 7.3c.6.6.8 1.2 1 1.9l.1.2c-.8-.6-1.6-1.5-2.2-2.3l-.6-.7c.5.2 1.2.4 1.7.9m-11.1-.7c1.1-.6 2.4-.8 3.6-.9 3 0 5.9 1.8 7.2 4.5.8 1.6 1.1 3.8.6 5.6-.6 2.2-2.4 4.3-4.5 5.2-2.4 1.1-5.7.9-7.8-.6-2.9-1.9-4.1-5.4-3.2-8.8.5-2 2.1-4.1 4.1-5m-2.3 0c-.6.5-1 1.2-1.5 1.8-.4.4-.9.8-1.4 1.2.3-.6.3-1.2.7-1.6.5-.9 1.4-1.1 2.2-1.4"/><path class="st1" d="M5.8 8.4c.2-.4.6-.6 1.1-.7-.8.6-.7 1.5-1 2.4-.1.2-.2.6-.3.8.2-.3.4-.6.6-1 .6-.6 1.4-.9 1.7-1.7 0 1.1-.9 1.9-1.8 2.5-.4.3-.7.6-.9 1.1V11c.1-.9 0-2 .6-2.6"/><path class="st1" d="M4.3 11.5c0-1 .4-1.7.9-2.4-.6.9-.1 2.1-.2 3.1l-.1 1.1c0-.2 0-.2.1-.4.2-.9.9-1.5 1.5-2.1.2-.2.2-.3.3-.5-.1.4-.2.9-.4 1.3-.5 1-1.5 1.8-1.6 2.9.1-1-.7-1.9-.5-3"/><path class="st1" d="M3.8 12.9l.3-.9c-.2 1.2.6 2.2.9 3.2l.3 1.2c-.4-1.1.2-2.2.8-3.2.2-.2.2-.5.3-.8.1.5-.1 1.1-.2 1.6-.2.6-.4 1.4-.6 2-.2.4-.1.9 0 1.3-.4-.8-1.3-1.5-1.5-2.4-.3-.5-.5-1.3-.3-2"/><path class="st1" d="M3.7 15.3c.1 1.3 1.5 2 2.2 3.2.2.2.3.4.6.6 0-.2-.2-.2-.2-.4-.2-.5-.3-1-.2-1.5.1-.6.3-1.3.2-2 .6 1.2.4 2.8.7 4.1.1.3.2.6.4.8-1.2-.8-2.8-1.5-3.3-3.1-.4-.5-.4-1.1-.4-1.7"/><path class="st1" d="M4.5 18.3c.6 1.5 2.4 1.6 3.4 2.5.1.2.4.4.6.4-.2-.2-.6-.5-.7-.8-.6-.9-.4-2.2-.9-3.2.4.6.8 1.1 1.1 1.8.4 1 .6 2.1 1.5 2.8-1-.3-2.2-.2-3.1-.8-.9-.6-1.8-1.5-1.9-2.7"/><path class="st1" d="M6.2 21.2c1.1 1.2 2.8.8 4.2 1.1.2 0 .4.1.6.1-.2-.1-.4-.1-.6-.2-1.1-.4-1.3-1.5-1.9-2.4.8.5 1.4 1.2 2.1 1.9.5.4 1.1.6 1.8.8-.2.1-.4 0-.6.1-1.2.3-2.4.7-3.7.3-.7-.4-1.5-1-1.9-1.7"/><path class="st1" d="M20.6 23.9c-1.2.4-2.4 0-3.4-.7-.4-.2-.7-.6-1.2-.6h-.5c.9.4 1.8 1 2.5 1.8-.2.2-.3.3-.5.4-.7-.8-1.5-1.5-2.5-2-.2 0-.3.2-.5.2-.7.5-1.5 1.1-2 1.9l-.5-.5c.8-.8 1.6-1.4 2.5-1.8-.9-.3-1.5.5-2.2.9-.8.6-1.9.8-2.9.4-.6-.2-1.1-.5-1.4-1 .8.6 1.9.6 2.8.2 1.2-.5 2.4-1.1 3.8-.8.2 0 .4.2.6 0 1.1-.2 2.2-.1 3.2.4l1 .4c.9.3 1.9.2 2.8-.3-.6.6-1 1-1.6 1.1"/><path class="st1" d="M21.9 22.7c-1.4.5-2.7-.1-4-.3h-.2c.6-.2 1.2-.3 1.7-.8.7-.7 1.4-1.4 2.2-1.9-.6.8-.6 1.9-1.6 2.4-.2.2-.6.2-.8.3.4 0 .6-.2 1.1-.2 1.3-.2 2.8 0 3.7-1.1-.5.7-1.4 1.4-2.1 1.6"/><path class="st1" d="M22.6 21.3c-.6.2-1.4.2-2.1.5 1.1-1 1.1-2.5 1.8-3.6.2-.3.4-.6.7-1-.5.9-.2 2.1-.8 3-.2.4-.5.7-.8 1 .1 0 .2-.1.3-.2.9-.8 1.9-1.1 2.9-1.8.4-.3.7-.6.9-1.1-.1 1.5-1.6 2.8-2.9 3.2"/><path class="st1" d="M24.3 18.9c-.6.3-1.1.6-1.5 1.1.8-1.3.4-3.1.9-4.5l.2-.5c-.1.9.3 1.6.2 2.5 0 .6-.2 1-.5 1.5.4-.5.6-1.1 1.1-1.5.7-.6 1.4-1.4 1.5-2.3.3 1.5-.6 2.9-1.9 3.7"/><path class="st0" d="M18.3 18.8c.3-.2.6-.4.8-.6h-.2c-.2 0-.2-.2-.2-.2l-.5-.5v-.1c0 .1-.1.2-.2.2 0 .1 0 .2.1.2.2.1.4.2.4.3-.1.2-.4.3-.2.6.1 0-.1 0 0 .1m-2.8-6.5c.1.1.2 0 .2-.1.1 0 .2.1.2.2h.2c0-.3.5-.2.6-.6h-.1s-.1 0-.1-.1l.2-.2c-.4-.2-.7-.4-1.1-.5-.2 0-.3 0-.5-.1.1.2 0 .6.1.8l.2.1c.1-.2.2-.2.3-.3h.2v.3c0 .4-.3.4-.4.5m4.2 2.7c-.2.6-.4 1.1-.7 1.5-.2.2-.2.4-.4.5l.4.3v-.1s0-.1.1-.1c.2 0 .2.2.2.2 0 .2.1.2.1.4 1-1.1 1.5-2.4 1.6-3.8l.1-.1h-1.2c0 .2 0 .5-.1.7l.2.2v.2c-.2.2-.2.2-.3.1m-1-3.5c-.2-.2-.3-.5-.6-.7-.4.4-.8.8-1.1 1.2l.1.1c0-.1.1-.2.1-.2.1-.2.2 0 .4 0h.6c.2.1.2.2.3.3v.2c0 .3.2-.1.3 0 .1 0 .2 0 .2.1 0 .2.2.1.2.2s-.1.1-.1.1c0 .2-.2.2-.1.3.2 0 .2-.2.3-.3-.1-.2-.1-.4-.2-.6-.2 0-.2-.2-.3-.2-.3-.2 0-.3-.1-.5m-3.5 8.3c.3-.1.6-.1 1-.2-.1 0-.2 0-.2-.1-.2 0-.2-.2-.3-.4 0-.1 0-.2.1-.3-.1-.2-.3 0-.5-.1 0 0-.1-.1-.2-.1l.1.1v1.1m.3-3.1c.1 0 0 .2.1.2.2-.1.3.2.4 0 0-.2.2-.2.3-.2.2-.1.4-.2.4-.5-.2 0-.2.1-.2.2-.1.1-.2-.2-.2-.1v.1c-.2.2-.2-.1-.3 0v.1c-.1-.2-.2-.1-.3-.2h-.2c0 .1-.2 0-.2.1-.1 0-.1.2-.2.2-.2 0-.2.2-.3.1v.1h.2c.1-.2.3 0 .5-.1m1.1-1.5c0 .1 0 .2.1.2.2 0 .1.2.2.2s0-.1 0-.2c0-.2-.1-.2-.3-.2.1 0 .1 0 0 0 .1-.1.1-.1 0 0m-.1-5.6c-.4-.2-.8-.2-1.3-.2v1.2h.1c.6.1 1.3.3 1.8.7v.1c.2-.2.4-.5.6-.7l.2-.1h-.1c-.4-.5-.9-.8-1.3-1M9 14.1l.1.7c0 .2.2.6.2.8 0-.1 0-.2.2-.2 0-.1.1-.2 0-.2 0-.2.1-.4.2-.6.2 0 .2-.2.4-.3.1 0 .2.2.2.2-.2-.2-.2-.4-.1-.6H8.9l.1.2zm7.2 1.9c.1-.1.3-.1.3-.2-.1-.1-.1 0-.3.2-.1-.1-.1 0 0 0m2.5-2.1l.2.2c.2.1 0 .2.2.3s.2.2.2.4v-.1c.1-.2 0-.5.1-.6-.2-.1-.5-.1-.7-.2m-1.6 2.9c.2 0 .2.2.4.2.2-.1.4 0 .5-.1 0-.2.1-.2.2-.4.1.1.1.2.1.3.1-.2.2-.2.3-.4.2-.4.5-.8.6-1.2-.1 0-.2 0-.3.1-.1 0-.2.1-.4 0h-.1c0 .1-.1.2-.2.1-.1 0-.1-.1-.1-.2v.2c-.1.1-.1.2-.2.2-.1.1-.2.1-.3.2 0 .2-.2.2-.3.2h.2c.2 0 .2-.2.2-.2.1 0 .2-.1.2 0 .1.1.1.2.1.4-.1.1 0 .2-.1.4 0 .2-.2.2-.2.3-.1.1-.2.1-.2.1-.3-.2-.6-.2-1-.2 0 0-.1 0 0 .1.3-.2.4-.2.6-.1m-2.4 3.5c-1.6-.1-3-.6-4.1-1.8l-.8.8c1.2 1.1 2.7 1.8 4.3 1.9.2 0 .6 0 .8.1l-.1-.1-.1-.9zM13.1 16c.4.3.9.6 1.5.6v-.3c0-.1.2-.1.2-.1s.1-.1 0-.1-.1-.2-.1-.2.1 0 .1-.1c-.1-.1 0-.2 0-.2l.1-.1c-.2.1-.5 0-.7-.2l-.2-.2-.9.9m-.4-1.3c-.1 0-.1 0 0 0h-.2c0-.2-.2-.1-.3-.2l.3.6c.1.2.2.3.3.5.1-.2.2-.2.3-.4V15c0-.1 0-.2-.1-.2s0 .2 0 .2h-.1c-.1 0-.2-.1-.2-.2.1 0 0 0 0-.1m.8.1c0 .1-.1.2-.2.2.1-.1.2-.2.3-.2h-.1zm1.2 3.9c-1 0-1.8-.4-2.6-1 0 .1.2.2.1.2-.1.1-.2.1-.3.1-.2 0-.4.2-.6.2-.2.1-.2-.2-.4-.2 1.1 1 2.4 1.5 3.9 1.6l.1.1v-1.2l-.2.2z"/><path class="st0" d="M10.3 18.2c-.2-.1-.2-.2-.4-.4-.2 0-.2-.2-.3-.2v-.2.1c-.2.1-.2-.1-.3-.2-.2-.1-.1-.4-.3-.3-.1 0-.1-.1-.2-.1-.2 0-.2-.2-.2-.2v.1c-.2 0-.2-.2-.3-.2h-.1c-.1-.1-.2-.2-.2-.4-.2-.2-.1-.4 0-.6 0 0 .1-.1.1-.2s.2-.1.2-.1.1 0 .1.1c.1 0 .2 0 .2-.1.1-.1.2-.1.2-.1.1.1.1.2.2.2l-.1-.1c-.1-.4-.2-.8-.2-1.2V13.8H7.3c.1 1.3.4 2.4 1 3.5.2.6.7 1 1.1 1.5l.8-.8.1.2zm1.3-9.4c-.2.2-.5.4-.7.6.3.2.6.5.8.7v.1c.6-.6 1.5-1 2.3-1.2.2 0 .4-.1.6 0V7.9c-1.1 0-2 .4-3 .9m-1 4.3c0 .2 0 .4-.1.6.2-.1.3 0 .5 0-.1 0 0-.2-.1-.2 0-.1 0-.2.1-.3 0-.2.2-.2.2-.4s.2-.1.3-.2c.1 0 0-.1 0-.2.1-.1.2-.1.3-.2l.2-.2c.2 0 .2-.3.5-.3-.3-.2-.6-.6-.9-.8-.4.6-.8 1.3-1 2.2m.2 1.6c0-.1-.1-.1-.1-.2.1-.2 0-.4.2-.4-.2 0-.2.1-.4 0l.1.1c0 .2.1.5.1.8 0-.2 0-.3.1-.3m1.1 2.8z"/><path class="st0" d="M10.6 9.7l-.4.6c-.7 1-1.1 2.1-1.1 3.3h1.2v-.1c.1-1.1.5-2.2 1.3-3-.4-.3-.7-.5-1-.8zm3.3 7.5c.1-.1.2-.2.3-.2-.4.1-.6-.2-1-.3-.2-.1-.4-.2-.5-.4-.2.3-.5.6-.8.8.2 0 .2.2.3.2.6.5 1.4.7 2 .9l-.2-.1c-.2-.2-.3-.4-.4-.6.3-.1.3-.2.3-.3M11.2 14v.2c0 .2-.2 0-.2.1v.2c-.1.2.2.3.2.6.1.2 0 .3.2.5 0 .2 0 .6.2.8v.2c0 .2-.2.2-.2.2s.1 0 .1.1c.3-.4.6-.7 1.1-1.1l-.2-.2c-.2-.4-.5-.9-.6-1.4l-.1-.1c0 .2-.1.2-.1.4-.1 0-.2-.1-.2-.1s-.1-.1 0-.2h.1V14c0-.1-.1-.2 0-.2s.2.1.2.2c.1 0 .2 0 .2-.1s.1-.2 0-.2c.1-.2 0-.3 0-.5-.1-.1-.2 0-.3 0-.3.1.1.3 0 .6-.2.3-.3.1-.4.2m10.2 0c-.1 1.4-.6 2.5-1.3 3.6-.2.2-.2.4-.5.5.3.2.6.6.9.9 1.2-1.4 1.9-3 1.9-4.9V14h-1zM10.6 9.2c1.2-1.1 2.5-1.7 4.1-1.8V6.2c-1.6.1-3 .6-4.3 1.5-.2.2-.4.4-.7.6.4.2.7.5.9.9m4.1.2c-1 .1-1.9.5-2.7 1.1.3.2.6.6.8.8 0 0 0-.1.1-.1.4-.2.8-.5 1.2-.6.2 0 .4-.1.6-.1V9.4zm0 1.5c-.7.1-1.2.4-1.7.9h.1c.1.1.2.1.3.2 0 .1-.1.1-.1.2h.1c.1 0 .1 0 .1-.1.1-.1.1.1.2.1h.2c.1-.1.2 0 .2-.1.2-.2.1-.3.2-.4.1 0 0 .1 0 .2.2.1.2-.1.4 0v-1m.1 1.8c-.2.2-.3.2-.5.3-.1.1 0 .2-.2.2 0 .1-.2.2-.2.2-.1.2 0 .3-.1.5-.2.2-.2-.2-.3-.2H13.2c-.1.1-.2.2-.1.2 0 .1-.2 0-.2.2.2 0 .2 0 .4-.1h.2s.1 0 .1.1c.1 0 .1-.2.1-.2 0-.1.1-.1.2-.1s0 .1 0 .1c.2.1 0 .2-.1.3 0 .1 0 .2-.2.2v-.1c0 .1 0 .2.1.2.1-.1.1-.2.2-.2.1-.1 0-.2.1-.3.2 0 .4-.1.6.1v.2c0 .1-.1.2-.2.2v.2c-.1.2-.3.2-.5.2.2.2.6.2.9.2.2 0 .1-.2.2-.3.1-.2.3-.1.5-.2.1-.2.2-.2.2-.4-.2-.1-.2-.2-.2-.3-.1-.1-.1-.2-.2-.2v-.1c0-.1.1-.1.1-.2-.1-.1-.1-.2-.1-.2-.2 0-.2-.2-.3-.2 0-.1-.2-.1-.2-.2-.2.1-.2-.2-.4-.2v-.2c.1-.1.2 0 .2 0h-.1c-.1-.1-.2 0-.3 0 .6.2.5.2.6.3"/><path class="st0" d="M8.6 13.6v-.2c.1-1.3.5-2.4 1.2-3.4.2-.2.3-.5.6-.6l-.8-.8c-1.1 1.3-1.9 2.8-2 4.4 0 .2 0 .5-.1.7.3-.2.8-.2 1.1-.1m10.9 4.8c-.1.2-.4.4-.6.6-.2.2-.6.3-.8.7-.2.2-.2.3-.4.4-.1.2-.2.2-.4.3-.3.3-.6-.2-.8-.2l-.6.1c-.2 0-.4.1-.6 0v1.2h.1c1.9-.1 3.6-.8 5-2.1l-.9-.8v-.2zM15.2 7.3c.1-.1.1-.1.2 0v.2h.1c.9.1 1.8.3 2.5.8.2-.1.4-.2.5 0 .2-.1.2.2.4.2.1 0 .3.3.3.5 0 .1.2.2.2.2.2-.2.4-.5.6-.7l.2-.1c-1.2-1.1-2.7-1.8-4.2-2-.2 0-.6 0-.8-.1v1"/><path class="st0" d="M15.2 9c.2-.1.3 0 .5 0 .8.2 1.5.4 2.2.9-.1-.1-.2-.2-.2-.3 0-.2-.2-.2-.2-.3h.1c.2.2.2.2.3.4.1 0 .2 0 .2.1s0 .2.2.3c0 .2.3.4.3.6 0 .1.1 0 .1 0l.2.3v.2c.1 0 .2-.1.2-.1.2.1 0 .2 0 .3h.2c0 .1-.1.2-.1.2 0 .1.1.1.2.1s.1.1.1.2c.2.2-.1.4 0 .6.1.2 0 .2-.1.4 0 .2-.2.2-.2.4H19c-.1.1.1.2 0 .3h.4c-.1-.2 0-.4.1-.6s.1-.3.2-.4c0 0 .1-.1.1 0 0 .2 0 .3-.1.4.2.2.1.4.2.6h1.2v-.1c-.1-.7-.2-1.5-.5-2.1-.1 0-.2.1-.2 0 0 0-.1 0 0-.1-.2-.2-.2-.3-.4-.5-.2 0-.3-.2-.5-.2s-.1-.3-.3-.2c-.1 0-.2-.2-.2-.2 0-.2 0-.4-.2-.6-.2-.1-.2.2-.3.1-.1 0 0-.2-.1-.2 0-.1-.1-.1-.1-.2.2-.2-.2-.2-.2-.5 0-.2-.2-.2-.3-.4-.6-.2-1.2-.5-1.9-.6-.2 0-.3 0-.5-.1v.1c-.2.5-.2.8-.2 1.2"/><path class="st0" d="M19.5 9.4c.1 0 .1.2.2.2.3.2.4.5.6.6.2.3.5.6.5.9.3.8.6 1.5.6 2.5h1.2c-.1-.1 0-.2-.1-.4-.2-1.8-.9-3.3-2.1-4.6-.2.3-.5.6-.9.8z"/><path class="st1" d="M15.3 7.1c0-.1.2 0 .2 0l.6-.2c.2 0 .5 0 .6.2-.2.2-.3.2-.5.2-.3 0-.6.1-.9-.2m3.4.7c.1 0 .2.1.2.2s.1.2 0 .2c-.2.1-.2-.2-.4-.2v-.1c.1-.2.1 0 .2-.1"/></svg>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2017",
|
|
4
|
+
"lib": ["dom", "dom.iterable", "esnext"],
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"module": "esnext",
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"jsx": "react-jsx",
|
|
15
|
+
"incremental": true,
|
|
16
|
+
"plugins": [
|
|
17
|
+
{
|
|
18
|
+
"name": "next"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"paths": {
|
|
22
|
+
"@/*": ["./*"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"include": [
|
|
26
|
+
"next-env.d.ts",
|
|
27
|
+
"**/*.ts",
|
|
28
|
+
"**/*.tsx",
|
|
29
|
+
".next/types/**/*.ts",
|
|
30
|
+
".next/dev/types/**/*.ts",
|
|
31
|
+
"**/*.mts"
|
|
32
|
+
],
|
|
33
|
+
"exclude": ["node_modules"]
|
|
34
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
This is a Next.js 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
|
+
* Next 16.x with React compiler
|
|
5
|
+
* UNDP Design System
|
|
6
|
+
* Authentication with [Better Auth](https://www.better-auth.com/)
|
|
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:3000/](http://localhost:3000/) 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 `next dev` and start the local server for local deployment.
|
|
33
|
+
- `npm run build`: Executes `next build` and builds the app for production and deployment.
|
|
34
|
+
- `npm run preview`: Executes `next start` and serves the static build output locally.
|
|
35
|
+
- `npm run clean`: Executes `rimraf node_modules && rimraf .next && 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
|
+
## 🛡️ Authentication
|
|
55
|
+
|
|
56
|
+
Authentication in this project is powered by [Better Auth](https://www.better-auth.com/), which provides a simple and flexible API for adding new providers.
|
|
57
|
+
|
|
58
|
+
**Add a new provider**
|
|
59
|
+
Add a new provider in `lib/auth.ts`. For example to add Google authenticator:
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import { betterAuth } from 'better-auth';
|
|
63
|
+
import { nextCookies } from 'better-auth/next-js';
|
|
64
|
+
|
|
65
|
+
export const auth = betterAuth({
|
|
66
|
+
plugins: [nextCookies()],
|
|
67
|
+
secret: process.env.BETTER_AUTH_SECRET,
|
|
68
|
+
baseURL: process.env.BETTER_AUTH_URL,
|
|
69
|
+
session: {
|
|
70
|
+
strategy: 'jwt',
|
|
71
|
+
expiresIn: 60 * 60 * 24 * 7,
|
|
72
|
+
cookieCache: {
|
|
73
|
+
enabled: true,
|
|
74
|
+
maxAge: 60 * 60 * 24 * 7,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
emailAndPassword: {
|
|
78
|
+
enabled: false,
|
|
79
|
+
},
|
|
80
|
+
socialProviders: {
|
|
81
|
+
goggle: {
|
|
82
|
+
clientId: process.env.GITHUB_CLIENT_ID as string,
|
|
83
|
+
clientSecret: process.env.GITHUB_CLIENT_SECRET as string,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Add env variable**
|
|
90
|
+
Add client id and secret (and tenant id) in the `.env.local` file. These id and secret are used in `lib/auth.ts`.
|
|
91
|
+
|
|
92
|
+
**Add a sign in button**
|
|
93
|
+
Example of sign in button
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
import { signIn } from '@/lib/auth-client';
|
|
97
|
+
|
|
98
|
+
<button onClick={() => signIn.social({ provider: 'google', callbackURL: '/user' })}>
|
|
99
|
+
Sign in with Google
|
|
100
|
+
</button>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
More info: [Better Auth docs](https://www.better-auth.com/docs/introduction)
|
|
104
|
+
|
|
105
|
+
## 📬 Contact us
|
|
106
|
+
|
|
107
|
+
For questions or feedback, contact us at [data@undp.org](mailto:data@undp.org).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { H6, P } from '@undp/design-system-react/Typography';
|
|
4
|
+
import Image from 'next/image';
|
|
5
|
+
|
|
6
|
+
export default function Home() {
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<div className='flex gap-4 items-center justify-center my-8 mx-auto'>
|
|
10
|
+
<Image
|
|
11
|
+
className='dark:invert'
|
|
12
|
+
src='/next.svg'
|
|
13
|
+
alt='Next.js logo'
|
|
14
|
+
width={100}
|
|
15
|
+
height={20}
|
|
16
|
+
priority
|
|
17
|
+
/>
|
|
18
|
+
<P marginBottom='none'>&</P>
|
|
19
|
+
<Image
|
|
20
|
+
className='dark:invert'
|
|
21
|
+
src='/undp-logo-blue.svg'
|
|
22
|
+
alt='UNDP logo'
|
|
23
|
+
width={40}
|
|
24
|
+
height={20}
|
|
25
|
+
priority
|
|
26
|
+
/>
|
|
27
|
+
</div>
|
|
28
|
+
<H6 marginBottom='xl' className='text-center'>
|
|
29
|
+
This is the about page.
|
|
30
|
+
</H6>
|
|
31
|
+
</>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Metadata } from 'next';
|
|
2
|
+
|
|
3
|
+
import HeaderEl from '@/components/Header';
|
|
4
|
+
import FooterEl from '@/components/Footer';
|
|
5
|
+
|
|
6
|
+
import './globals.css';
|
|
7
|
+
import '@undp/design-system-react/style.css';
|
|
8
|
+
|
|
9
|
+
export const metadata: Metadata = {
|
|
10
|
+
title: 'My Next + UNDP app',
|
|
11
|
+
description: 'Generated by create undp app',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default function RootLayout({
|
|
15
|
+
children,
|
|
16
|
+
}: Readonly<{
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}>) {
|
|
19
|
+
return (
|
|
20
|
+
<html lang='en'>
|
|
21
|
+
<body className='flex flex-col gap-0 min-h-screen'>
|
|
22
|
+
<HeaderEl />
|
|
23
|
+
<main className='grow-1 flex flex-col justify-center'>
|
|
24
|
+
<div className='flex flex-col justify-center'>{children}</div>
|
|
25
|
+
</main>
|
|
26
|
+
<FooterEl />
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import Image from 'next/image';
|
|
4
|
+
import { P } from '@undp/design-system-react/Typography';
|
|
5
|
+
import { Button } from '@undp/design-system-react/Button';
|
|
6
|
+
|
|
7
|
+
import { signIn } from '@/lib/auth-client';
|
|
8
|
+
|
|
9
|
+
export default function LoginPage() {
|
|
10
|
+
const handleSignIn = async () => {
|
|
11
|
+
await signIn.social({
|
|
12
|
+
provider: 'microsoft',
|
|
13
|
+
callbackURL: '/user',
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<>
|
|
19
|
+
<div className='flex gap-4 items-center justify-center my-8 mx-auto'>
|
|
20
|
+
<Image
|
|
21
|
+
className='dark:invert'
|
|
22
|
+
src='/next.svg'
|
|
23
|
+
alt='Next.js logo'
|
|
24
|
+
width={100}
|
|
25
|
+
height={20}
|
|
26
|
+
priority
|
|
27
|
+
/>
|
|
28
|
+
<P marginBottom='none'>&</P>
|
|
29
|
+
<Image
|
|
30
|
+
className='dark:invert'
|
|
31
|
+
src='/undp-logo-blue.svg'
|
|
32
|
+
alt='UNDP logo'
|
|
33
|
+
width={40}
|
|
34
|
+
height={20}
|
|
35
|
+
priority
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
<div className='flex justify-center'>
|
|
39
|
+
<Button onClick={handleSignIn} variant='tertiary'>
|
|
40
|
+
Sign in with Microsoft
|
|
41
|
+
</Button>
|
|
42
|
+
</div>
|
|
43
|
+
</>
|
|
44
|
+
);
|
|
45
|
+
}
|