@undp/create-app 0.1.0 → 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.
Files changed (276) hide show
  1. package/README.md +62 -0
  2. package/bin/generateFiles/generateIndexHtml.js +18 -0
  3. package/bin/generateFiles/generatePackageJson.js +160 -0
  4. package/bin/{generateTemplates/templates/configFiles/vite.config.ts.txt → generateFiles/generateViteConfig.js} +14 -12
  5. package/bin/generateFiles/index.js +3 -0
  6. package/bin/generateFiles.js +42 -2
  7. package/bin/index.js +38 -14
  8. package/bin/promptUser.js +60 -37
  9. package/bin/templates/next/withDataViz/auth/README.md +108 -0
  10. package/bin/templates/next/withDataViz/auth/app/about/page.tsx +33 -0
  11. package/bin/templates/next/withDataViz/auth/app/api/auth/[...all]/route.ts +5 -0
  12. package/bin/templates/next/withDataViz/auth/app/favicon.ico +0 -0
  13. package/bin/templates/next/withDataViz/auth/app/globals.css +3 -0
  14. package/bin/templates/next/withDataViz/auth/app/layout.tsx +30 -0
  15. package/bin/templates/next/withDataViz/auth/app/login/page.tsx +45 -0
  16. package/bin/templates/next/withDataViz/auth/app/page.tsx +33 -0
  17. package/bin/templates/next/withDataViz/auth/app/user/page.tsx +86 -0
  18. package/bin/templates/next/withDataViz/auth/components/Footer.tsx +16 -0
  19. package/bin/templates/next/withDataViz/auth/components/Header.tsx +56 -0
  20. package/bin/templates/next/withDataViz/auth/eslint.config.mjs +103 -0
  21. package/bin/templates/next/withDataViz/auth/lib/auth-client.ts +7 -0
  22. package/bin/templates/next/withDataViz/auth/lib/auth.ts +30 -0
  23. package/bin/templates/next/withDataViz/auth/next.config.ts +10 -0
  24. package/bin/templates/next/withDataViz/auth/postcss.config.mjs +7 -0
  25. package/bin/templates/next/withDataViz/auth/public/next.svg +1 -0
  26. package/bin/templates/next/withDataViz/auth/tsconfig.json +34 -0
  27. package/bin/templates/next/withDataViz/basic/.prettierrc +10 -0
  28. package/bin/templates/next/withDataViz/basic/README.md +56 -0
  29. package/bin/templates/next/withDataViz/basic/app/about/page.tsx +33 -0
  30. package/bin/templates/next/withDataViz/basic/app/favicon.ico +0 -0
  31. package/bin/templates/next/withDataViz/basic/app/globals.css +3 -0
  32. package/bin/templates/next/withDataViz/basic/app/layout.tsx +31 -0
  33. package/bin/templates/next/withDataViz/basic/app/page.tsx +33 -0
  34. package/bin/templates/next/withDataViz/basic/components/Footer.tsx +16 -0
  35. package/bin/templates/next/withDataViz/basic/components/Header.tsx +27 -0
  36. package/bin/templates/next/withDataViz/basic/eslint.config.mjs +103 -0
  37. package/bin/templates/next/withDataViz/basic/next.config.ts +7 -0
  38. package/bin/templates/next/withDataViz/basic/postcss.config.mjs +7 -0
  39. package/bin/templates/next/withDataViz/basic/public/next.svg +1 -0
  40. package/bin/templates/next/withDataViz/basic/public/undp-logo-blue.svg +1 -0
  41. package/bin/templates/next/withDataViz/basic/tailwind.config.js +7 -0
  42. package/bin/templates/next/withDataViz/basic/tsconfig.json +34 -0
  43. package/bin/templates/next/withoutDataViz/auth/.prettierrc +10 -0
  44. package/bin/templates/next/withoutDataViz/auth/README.md +107 -0
  45. package/bin/templates/next/withoutDataViz/auth/app/about/page.tsx +33 -0
  46. package/bin/templates/next/withoutDataViz/auth/app/api/auth/[...all]/route.ts +5 -0
  47. package/bin/templates/next/withoutDataViz/auth/app/favicon.ico +0 -0
  48. package/bin/templates/next/withoutDataViz/auth/app/globals.css +3 -0
  49. package/bin/templates/next/withoutDataViz/auth/app/layout.tsx +30 -0
  50. package/bin/templates/next/withoutDataViz/auth/app/login/page.tsx +45 -0
  51. package/bin/templates/next/withoutDataViz/auth/app/page.tsx +33 -0
  52. package/bin/templates/next/withoutDataViz/auth/app/user/page.tsx +86 -0
  53. package/bin/templates/next/withoutDataViz/auth/components/Footer.tsx +16 -0
  54. package/bin/templates/next/withoutDataViz/auth/components/Header.tsx +56 -0
  55. package/bin/templates/next/withoutDataViz/auth/eslint.config.mjs +103 -0
  56. package/bin/templates/next/withoutDataViz/auth/lib/auth-client.ts +7 -0
  57. package/bin/templates/next/withoutDataViz/auth/lib/auth.ts +30 -0
  58. package/bin/templates/next/withoutDataViz/auth/next.config.ts +10 -0
  59. package/bin/templates/next/withoutDataViz/auth/postcss.config.mjs +7 -0
  60. package/bin/templates/next/withoutDataViz/auth/public/next.svg +1 -0
  61. package/bin/templates/next/withoutDataViz/auth/public/undp-logo-blue.svg +1 -0
  62. package/bin/templates/next/withoutDataViz/auth/tailwind.config.js +7 -0
  63. package/bin/templates/next/withoutDataViz/auth/tsconfig.json +34 -0
  64. package/bin/templates/next/withoutDataViz/basic/.prettierrc +10 -0
  65. package/bin/templates/next/withoutDataViz/basic/README.md +55 -0
  66. package/bin/templates/next/withoutDataViz/basic/app/about/page.tsx +33 -0
  67. package/bin/templates/next/withoutDataViz/basic/app/favicon.ico +0 -0
  68. package/bin/templates/next/withoutDataViz/basic/app/globals.css +3 -0
  69. package/bin/templates/next/withoutDataViz/basic/app/layout.tsx +31 -0
  70. package/bin/templates/next/withoutDataViz/basic/app/page.tsx +33 -0
  71. package/bin/templates/next/withoutDataViz/basic/components/Footer.tsx +16 -0
  72. package/bin/templates/next/withoutDataViz/basic/components/Header.tsx +27 -0
  73. package/bin/templates/next/withoutDataViz/basic/eslint.config.mjs +103 -0
  74. package/bin/templates/next/withoutDataViz/basic/next.config.ts +7 -0
  75. package/bin/templates/next/withoutDataViz/basic/postcss.config.mjs +7 -0
  76. package/bin/templates/next/withoutDataViz/basic/public/next.svg +1 -0
  77. package/bin/templates/next/withoutDataViz/basic/public/undp-logo-blue.svg +1 -0
  78. package/bin/templates/next/withoutDataViz/basic/tailwind.config.js +7 -0
  79. package/bin/templates/next/withoutDataViz/basic/tsconfig.json +34 -0
  80. package/bin/templates/vite/withDataViz/basic/.prettierrc +10 -0
  81. package/bin/templates/vite/withDataViz/basic/README.md +76 -0
  82. package/bin/{generateTemplates/generateIndexHtml.js → templates/vite/withDataViz/basic/index.html} +3 -5
  83. package/bin/templates/vite/withDataViz/basic/public/favicon.ico +0 -0
  84. package/bin/templates/vite/withDataViz/basic/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  85. package/bin/templates/vite/withDataViz/basic/public/imgs/Vitejs-logo.svg +15 -0
  86. package/bin/templates/vite/withDataViz/basic/public/imgs/undp-logo-blue.svg +1 -0
  87. package/bin/templates/vite/withDataViz/basic/src/App.tsx +38 -0
  88. package/bin/templates/vite/withDataViz/basic/src/assets/undp-logo-blue.svg +1 -0
  89. package/bin/templates/vite/withDataViz/basic/src/components/Footer.tsx +14 -0
  90. package/bin/{generateTemplates/templates/router/components/Header.txt → templates/vite/withDataViz/basic/src/components/Header.tsx} +8 -12
  91. package/bin/templates/vite/withDataViz/basic/src/styles/style.css +4 -0
  92. package/bin/templates/vite/withDataViz/basic/src/vite-env.d.ts +1 -0
  93. package/bin/templates/vite/withDataViz/basic/tailwind.config.js +7 -0
  94. package/bin/{generateTemplates/templates/configFiles → templates/vite/withDataViz/basic}/tsconfig.json +1 -1
  95. package/bin/{generateTemplates/templates/configFiles/viteWithoutPostCss.config.ts.txt → templates/vite/withDataViz/basic/vite.config.ts} +17 -1
  96. package/bin/templates/vite/withDataViz/query/.prettierrc +10 -0
  97. package/bin/templates/vite/withDataViz/query/README.md +80 -0
  98. package/bin/templates/vite/withDataViz/query/eslint.config.mjs +97 -0
  99. package/bin/templates/vite/withDataViz/query/index.html +13 -0
  100. package/bin/templates/vite/withDataViz/query/public/favicon.ico +0 -0
  101. package/bin/templates/vite/withDataViz/query/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  102. package/bin/templates/vite/withDataViz/query/public/imgs/Vitejs-logo.svg +15 -0
  103. package/bin/templates/vite/withDataViz/query/public/imgs/logo-color-600.png +0 -0
  104. package/bin/templates/vite/withDataViz/query/public/imgs/undp-logo-blue.svg +1 -0
  105. package/bin/templates/vite/withDataViz/query/src/App.tsx +70 -0
  106. package/bin/templates/vite/withDataViz/query/src/assets/undp-logo-blue.svg +1 -0
  107. package/bin/templates/vite/withDataViz/query/src/components/Footer.tsx +14 -0
  108. package/bin/templates/vite/withDataViz/query/src/components/Header.tsx +25 -0
  109. package/bin/templates/vite/withDataViz/query/src/integration/tanstack-query.tsx +27 -0
  110. package/bin/templates/vite/withDataViz/query/src/main.tsx +21 -0
  111. package/bin/templates/vite/withDataViz/query/src/styles/fonts.css +213 -0
  112. package/bin/templates/vite/withDataViz/query/src/styles/style.css +4 -0
  113. package/bin/templates/vite/withDataViz/query/src/vite-env.d.ts +1 -0
  114. package/bin/templates/vite/withDataViz/query/tailwind.config.js +7 -0
  115. package/bin/templates/vite/withDataViz/query/tsconfig.json +29 -0
  116. package/bin/templates/vite/withDataViz/query/tsconfig.node.json +9 -0
  117. package/bin/templates/vite/withDataViz/query/vite.config.ts +75 -0
  118. package/bin/templates/vite/withDataViz/query+router/.prettierrc +10 -0
  119. package/bin/templates/vite/withDataViz/query+router/README.md +112 -0
  120. package/bin/templates/vite/withDataViz/query+router/eslint.config.mjs +97 -0
  121. package/bin/templates/vite/withDataViz/query+router/index.html +13 -0
  122. package/bin/templates/vite/withDataViz/query+router/public/favicon.ico +0 -0
  123. package/bin/templates/vite/withDataViz/query+router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  124. package/bin/templates/vite/withDataViz/query+router/public/imgs/Vitejs-logo.svg +15 -0
  125. package/bin/templates/vite/withDataViz/query+router/public/imgs/logo-color-600.png +0 -0
  126. package/bin/templates/vite/withDataViz/query+router/public/imgs/undp-logo-blue.svg +1 -0
  127. package/bin/templates/vite/withDataViz/query+router/src/App.tsx +42 -0
  128. package/bin/templates/vite/withDataViz/query+router/src/assets/undp-logo-blue.svg +1 -0
  129. package/bin/templates/vite/withDataViz/query+router/src/components/Footer.tsx +14 -0
  130. package/bin/{generateTemplates/templates/router+query/components/Header.txt → templates/vite/withDataViz/query+router/src/components/Header.tsx} +8 -12
  131. package/bin/{generateTemplates/templates/router+query/integration/tanstack-query.txt → templates/vite/withDataViz/query+router/src/integration/tanstack-query.tsx} +5 -5
  132. package/bin/{generateTemplates/templates/router+query/main.txt → templates/vite/withDataViz/query+router/src/main.tsx} +15 -11
  133. package/bin/templates/vite/withDataViz/query+router/src/routes/queryDemo.tsx +73 -0
  134. package/bin/templates/vite/withDataViz/query+router/src/styles/fonts.css +213 -0
  135. package/bin/templates/vite/withDataViz/query+router/src/styles/style.css +4 -0
  136. package/bin/templates/vite/withDataViz/query+router/src/vite-env.d.ts +1 -0
  137. package/bin/templates/vite/withDataViz/query+router/tailwind.config.js +7 -0
  138. package/bin/templates/vite/withDataViz/query+router/tsconfig.json +29 -0
  139. package/bin/templates/vite/withDataViz/query+router/tsconfig.node.json +9 -0
  140. package/bin/templates/vite/withDataViz/query+router/vite.config.ts +75 -0
  141. package/bin/templates/vite/withDataViz/router/.prettierrc +10 -0
  142. package/bin/templates/vite/withDataViz/router/README.md +107 -0
  143. package/bin/templates/vite/withDataViz/router/eslint.config.mjs +97 -0
  144. package/bin/templates/vite/withDataViz/router/index.html +13 -0
  145. package/bin/templates/vite/withDataViz/router/public/favicon.ico +0 -0
  146. package/bin/templates/vite/withDataViz/router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  147. package/bin/templates/vite/withDataViz/router/public/imgs/Vitejs-logo.svg +15 -0
  148. package/bin/templates/vite/withDataViz/router/public/imgs/logo-color-600.png +0 -0
  149. package/bin/templates/vite/withDataViz/router/public/imgs/undp-logo-blue.svg +1 -0
  150. package/bin/templates/vite/withDataViz/router/src/App.tsx +51 -0
  151. package/bin/templates/vite/withDataViz/router/src/assets/undp-logo-blue.svg +1 -0
  152. package/bin/templates/vite/withDataViz/router/src/components/Footer.tsx +14 -0
  153. package/bin/templates/vite/withDataViz/router/src/components/Header.tsx +25 -0
  154. package/bin/{generateTemplates/templates/router/main.txt → templates/vite/withDataViz/router/src/main.tsx} +18 -12
  155. package/bin/templates/vite/withDataViz/router/src/routes/about.tsx +73 -0
  156. package/bin/templates/vite/withDataViz/router/src/styles/fonts.css +213 -0
  157. package/bin/templates/vite/withDataViz/router/src/styles/style.css +4 -0
  158. package/bin/templates/vite/withDataViz/router/src/vite-env.d.ts +1 -0
  159. package/bin/templates/vite/withDataViz/router/tailwind.config.js +7 -0
  160. package/bin/templates/vite/withDataViz/router/tsconfig.json +29 -0
  161. package/bin/templates/vite/withDataViz/router/tsconfig.node.json +9 -0
  162. package/bin/templates/vite/withDataViz/router/vite.config.ts +75 -0
  163. package/bin/templates/vite/withoutDataViz/basic/.prettierrc +10 -0
  164. package/bin/templates/vite/withoutDataViz/basic/README.md +75 -0
  165. package/bin/templates/vite/withoutDataViz/basic/eslint.config.mjs +97 -0
  166. package/bin/templates/vite/withoutDataViz/basic/index.html +13 -0
  167. package/bin/templates/vite/withoutDataViz/basic/public/favicon.ico +0 -0
  168. package/bin/templates/vite/withoutDataViz/basic/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  169. package/bin/templates/vite/withoutDataViz/basic/public/imgs/Vitejs-logo.svg +15 -0
  170. package/bin/templates/vite/withoutDataViz/basic/public/imgs/undp-logo-blue.svg +1 -0
  171. package/bin/templates/vite/withoutDataViz/basic/src/App.tsx +38 -0
  172. package/bin/templates/vite/withoutDataViz/basic/src/assets/undp-logo-blue.svg +1 -0
  173. package/bin/templates/vite/withoutDataViz/basic/src/components/Footer.tsx +14 -0
  174. package/bin/templates/vite/withoutDataViz/basic/src/components/Header.tsx +25 -0
  175. package/bin/templates/vite/withoutDataViz/basic/src/main.tsx +10 -0
  176. package/bin/templates/vite/withoutDataViz/basic/src/styles/fonts.css +213 -0
  177. package/bin/templates/vite/withoutDataViz/basic/src/styles/style.css +3 -0
  178. package/bin/templates/vite/withoutDataViz/basic/src/vite-env.d.ts +1 -0
  179. package/bin/templates/vite/withoutDataViz/basic/tailwind.config.js +7 -0
  180. package/bin/templates/vite/withoutDataViz/basic/tsconfig.json +29 -0
  181. package/bin/templates/vite/withoutDataViz/basic/tsconfig.node.json +9 -0
  182. package/bin/templates/vite/withoutDataViz/basic/vite.config.ts +75 -0
  183. package/bin/templates/vite/withoutDataViz/query/.prettierrc +10 -0
  184. package/bin/templates/vite/withoutDataViz/query/README.md +80 -0
  185. package/bin/templates/vite/withoutDataViz/query/eslint.config.mjs +97 -0
  186. package/bin/templates/vite/withoutDataViz/query/index.html +13 -0
  187. package/bin/templates/vite/withoutDataViz/query/public/favicon.ico +0 -0
  188. package/bin/templates/vite/withoutDataViz/query/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  189. package/bin/templates/vite/withoutDataViz/query/public/imgs/Vitejs-logo.svg +15 -0
  190. package/bin/templates/vite/withoutDataViz/query/public/imgs/logo-color-600.png +0 -0
  191. package/bin/templates/vite/withoutDataViz/query/public/imgs/undp-logo-blue.svg +1 -0
  192. package/bin/templates/vite/withoutDataViz/query/src/App.tsx +70 -0
  193. package/bin/templates/vite/withoutDataViz/query/src/assets/undp-logo-blue.svg +1 -0
  194. package/bin/templates/vite/withoutDataViz/query/src/components/Footer.tsx +14 -0
  195. package/bin/templates/vite/withoutDataViz/query/src/components/Header.tsx +25 -0
  196. package/bin/templates/vite/withoutDataViz/query/src/integration/tanstack-query.tsx +27 -0
  197. package/bin/templates/vite/withoutDataViz/query/src/main.tsx +21 -0
  198. package/bin/templates/vite/withoutDataViz/query/src/styles/fonts.css +213 -0
  199. package/bin/templates/vite/withoutDataViz/query/src/styles/style.css +3 -0
  200. package/bin/templates/vite/withoutDataViz/query/src/vite-env.d.ts +1 -0
  201. package/bin/templates/vite/withoutDataViz/query/tailwind.config.js +7 -0
  202. package/bin/templates/vite/withoutDataViz/query/tsconfig.json +29 -0
  203. package/bin/templates/vite/withoutDataViz/query/tsconfig.node.json +9 -0
  204. package/bin/templates/vite/withoutDataViz/query/vite.config.ts +75 -0
  205. package/bin/templates/vite/withoutDataViz/query+router/.prettierrc +10 -0
  206. package/bin/templates/vite/withoutDataViz/query+router/README.md +111 -0
  207. package/bin/templates/vite/withoutDataViz/query+router/eslint.config.mjs +97 -0
  208. package/bin/templates/vite/withoutDataViz/query+router/index.html +13 -0
  209. package/bin/templates/vite/withoutDataViz/query+router/public/favicon.ico +0 -0
  210. package/bin/templates/vite/withoutDataViz/query+router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  211. package/bin/templates/vite/withoutDataViz/query+router/public/imgs/Vitejs-logo.svg +15 -0
  212. package/bin/templates/vite/withoutDataViz/query+router/public/imgs/logo-color-600.png +0 -0
  213. package/bin/templates/vite/withoutDataViz/query+router/public/imgs/undp-logo-blue.svg +1 -0
  214. package/bin/templates/vite/withoutDataViz/query+router/src/App.tsx +42 -0
  215. package/bin/templates/vite/withoutDataViz/query+router/src/assets/undp-logo-blue.svg +1 -0
  216. package/bin/templates/vite/withoutDataViz/query+router/src/components/Footer.tsx +14 -0
  217. package/bin/templates/vite/withoutDataViz/query+router/src/components/Header.tsx +25 -0
  218. package/bin/templates/vite/withoutDataViz/query+router/src/integration/tanstack-query.tsx +27 -0
  219. package/bin/templates/vite/withoutDataViz/query+router/src/main.tsx +73 -0
  220. package/bin/templates/vite/withoutDataViz/query+router/src/routes/queryDemo.tsx +73 -0
  221. package/bin/templates/vite/withoutDataViz/query+router/src/styles/fonts.css +213 -0
  222. package/bin/templates/vite/withoutDataViz/query+router/src/styles/style.css +3 -0
  223. package/bin/templates/vite/withoutDataViz/query+router/src/vite-env.d.ts +1 -0
  224. package/bin/templates/vite/withoutDataViz/query+router/tailwind.config.js +7 -0
  225. package/bin/templates/vite/withoutDataViz/query+router/tsconfig.json +29 -0
  226. package/bin/templates/vite/withoutDataViz/query+router/tsconfig.node.json +9 -0
  227. package/bin/templates/vite/withoutDataViz/query+router/vite.config.ts +75 -0
  228. package/bin/templates/vite/withoutDataViz/router/.prettierrc +10 -0
  229. package/bin/templates/vite/withoutDataViz/router/README.md +106 -0
  230. package/bin/templates/vite/withoutDataViz/router/eslint.config.mjs +97 -0
  231. package/bin/templates/vite/withoutDataViz/router/index.html +13 -0
  232. package/bin/templates/vite/withoutDataViz/router/public/favicon.ico +0 -0
  233. package/bin/templates/vite/withoutDataViz/router/public/imgs/Tailwind_CSS_Logo.svg +1 -0
  234. package/bin/templates/vite/withoutDataViz/router/public/imgs/Vitejs-logo.svg +15 -0
  235. package/bin/templates/vite/withoutDataViz/router/public/imgs/logo-color-600.png +0 -0
  236. package/bin/templates/vite/withoutDataViz/router/public/imgs/undp-logo-blue.svg +1 -0
  237. package/bin/templates/vite/withoutDataViz/router/src/App.tsx +51 -0
  238. package/bin/templates/vite/withoutDataViz/router/src/assets/undp-logo-blue.svg +1 -0
  239. package/bin/templates/vite/withoutDataViz/router/src/components/Footer.tsx +14 -0
  240. package/bin/templates/vite/withoutDataViz/router/src/components/Header.tsx +25 -0
  241. package/bin/templates/vite/withoutDataViz/router/src/main.tsx +66 -0
  242. package/bin/templates/vite/withoutDataViz/router/src/routes/about.tsx +73 -0
  243. package/bin/templates/vite/withoutDataViz/router/src/styles/fonts.css +213 -0
  244. package/bin/templates/vite/withoutDataViz/router/src/styles/style.css +4 -0
  245. package/bin/templates/vite/withoutDataViz/router/src/vite-env.d.ts +1 -0
  246. package/bin/templates/vite/withoutDataViz/router/tailwind.config.js +7 -0
  247. package/bin/templates/vite/withoutDataViz/router/tsconfig.json +29 -0
  248. package/bin/templates/vite/withoutDataViz/router/tsconfig.node.json +9 -0
  249. package/bin/templates/vite/withoutDataViz/router/vite.config.ts +75 -0
  250. package/bin/utils/printSuccess.js +0 -9
  251. package/package.json +6 -2
  252. package/bin/generateTemplates/copyTemplate.js +0 -18
  253. package/bin/generateTemplates/generatePackageJson.js +0 -105
  254. package/bin/generateTemplates/generateReadme.js +0 -143
  255. package/bin/generateTemplates/generateStyleCss.js +0 -6
  256. package/bin/generateTemplates/index.js +0 -6
  257. package/bin/generateTemplates/templates/basic/App.txt +0 -32
  258. package/bin/generateTemplates/templates/basic/AppWithContainer.txt +0 -32
  259. package/bin/generateTemplates/templates/configFiles/staticwebapp.config.json +0 -44
  260. package/bin/generateTemplates/templates/configFiles/vite-env.txt +0 -1
  261. package/bin/generateTemplates/templates/query/App.txt +0 -57
  262. package/bin/generateTemplates/templates/query/AppWithContainer.txt +0 -67
  263. package/bin/generateTemplates/templates/query/main.txt +0 -29
  264. package/bin/generateTemplates/templates/router/App.txt +0 -30
  265. package/bin/generateTemplates/templates/router/components/Footer.txt +0 -20
  266. package/bin/generateTemplates/templates/router/routes/About.txt +0 -28
  267. package/bin/generateTemplates/templates/router+query/App.txt +0 -30
  268. package/bin/generateTemplates/templates/router+query/components/Footer.txt +0 -20
  269. package/bin/generateTemplates/templates/router+query/routes/queryDemo.txt +0 -56
  270. /package/bin/{generateTemplates/templates/configFiles → templates/next/withDataViz/auth}/.prettierrc +0 -0
  271. /package/bin/{generateTemplates/templates/configFiles/icon.txt → templates/next/withDataViz/auth/public/undp-logo-blue.svg} +0 -0
  272. /package/bin/{generateTemplates/templates/configFiles → templates/next/withDataViz/auth}/tailwind.config.js +0 -0
  273. /package/bin/{generateTemplates/templates/configFiles/eslint.config.js → templates/vite/withDataViz/basic/eslint.config.mjs} +0 -0
  274. /package/bin/{generateTemplates/templates/basic/main.txt → templates/vite/withDataViz/basic/src/main.tsx} +0 -0
  275. /package/bin/{generateTemplates/templates/css → templates/vite/withDataViz/basic/src/styles}/fonts.css +0 -0
  276. /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
+ }
@@ -0,0 +1,3 @@
1
+ @import "tailwindcss";
2
+
3
+ @config "../tailwind.config.js";
@@ -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,7 @@
1
+ import type { NextConfig } from 'next';
2
+
3
+ const nextConfig: NextConfig = {
4
+ /* config options here */
5
+ };
6
+
7
+ export default nextConfig;
@@ -0,0 +1,7 @@
1
+ const config = {
2
+ plugins: {
3
+ '@tailwindcss/postcss': {},
4
+ },
5
+ };
6
+
7
+ export default config;
@@ -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,7 @@
1
+ import * as Preset from '@undp/design-system-react/tailwind.config';
2
+
3
+ /** @type {import('tailwindcss').Config} */
4
+
5
+ export default {
6
+ presets: [Preset],
7
+ };
@@ -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,10 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": true,
4
+ "trailingComma": "all",
5
+ "arrowParens": "avoid",
6
+ "tabWidth": 2,
7
+ "jsxSingleQuote": true,
8
+ "endOfLine": "auto",
9
+ "bracketSpacing": true
10
+ }
@@ -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
+ }
@@ -0,0 +1,5 @@
1
+ import { toNextJsHandler } from 'better-auth/next-js';
2
+
3
+ import { auth } from '@/lib/auth';
4
+
5
+ export const { GET, POST } = toNextJsHandler(auth.handler);
@@ -0,0 +1,3 @@
1
+ @import "tailwindcss";
2
+
3
+ @config "../tailwind.config.js";
@@ -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
+ }