@donotdev/cli 0.0.3

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 (281) hide show
  1. package/LICENSE.md +48 -0
  2. package/README.md +291 -0
  3. package/dependencies-matrix.json +694 -0
  4. package/dist/bin/commands/build.d.ts +11 -0
  5. package/dist/bin/commands/build.d.ts.map +1 -0
  6. package/dist/bin/commands/build.js +8162 -0
  7. package/dist/bin/commands/build.js.map +1 -0
  8. package/dist/bin/commands/bump.d.ts +11 -0
  9. package/dist/bin/commands/bump.d.ts.map +1 -0
  10. package/dist/bin/commands/bump.js +8004 -0
  11. package/dist/bin/commands/bump.js.map +1 -0
  12. package/dist/bin/commands/cacheout.d.ts +11 -0
  13. package/dist/bin/commands/cacheout.d.ts.map +1 -0
  14. package/dist/bin/commands/cacheout.js +7630 -0
  15. package/dist/bin/commands/cacheout.js.map +1 -0
  16. package/dist/bin/commands/create-app.d.ts +11 -0
  17. package/dist/bin/commands/create-app.d.ts.map +1 -0
  18. package/dist/bin/commands/create-app.js +9032 -0
  19. package/dist/bin/commands/create-app.js.map +1 -0
  20. package/dist/bin/commands/create-project.d.ts +11 -0
  21. package/dist/bin/commands/create-project.d.ts.map +1 -0
  22. package/dist/bin/commands/create-project.js +9643 -0
  23. package/dist/bin/commands/create-project.js.map +1 -0
  24. package/dist/bin/commands/deploy.d.ts +11 -0
  25. package/dist/bin/commands/deploy.d.ts.map +1 -0
  26. package/dist/bin/commands/deploy.js +9007 -0
  27. package/dist/bin/commands/deploy.js.map +1 -0
  28. package/dist/bin/commands/dev.d.ts +11 -0
  29. package/dist/bin/commands/dev.d.ts.map +1 -0
  30. package/dist/bin/commands/dev.js +7892 -0
  31. package/dist/bin/commands/dev.js.map +1 -0
  32. package/dist/bin/commands/emu.d.ts +11 -0
  33. package/dist/bin/commands/emu.d.ts.map +1 -0
  34. package/dist/bin/commands/emu.js +8302 -0
  35. package/dist/bin/commands/emu.js.map +1 -0
  36. package/dist/bin/commands/format.d.ts +11 -0
  37. package/dist/bin/commands/format.d.ts.map +1 -0
  38. package/dist/bin/commands/format.js +8009 -0
  39. package/dist/bin/commands/format.js.map +1 -0
  40. package/dist/bin/commands/lint.d.ts +11 -0
  41. package/dist/bin/commands/lint.d.ts.map +1 -0
  42. package/dist/bin/commands/lint.js +7481 -0
  43. package/dist/bin/commands/lint.js.map +1 -0
  44. package/dist/bin/commands/preview.d.ts +11 -0
  45. package/dist/bin/commands/preview.d.ts.map +1 -0
  46. package/dist/bin/commands/preview.js +7909 -0
  47. package/dist/bin/commands/preview.js.map +1 -0
  48. package/dist/bin/commands/sync-secrets.d.ts +11 -0
  49. package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
  50. package/dist/bin/commands/sync-secrets.js +8227 -0
  51. package/dist/bin/commands/sync-secrets.js.map +1 -0
  52. package/dist/bin/dndev.js +222 -0
  53. package/dist/bin/donotdev.js +222 -0
  54. package/dist/index.d.ts +8 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +12820 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +71 -0
  59. package/templates/app-demo/index.html.example +20 -0
  60. package/templates/app-demo/public/favicon.ico.example +0 -0
  61. package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
  62. package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
  63. package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
  64. package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
  65. package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
  66. package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
  67. package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
  68. package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
  69. package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
  70. package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
  71. package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
  72. package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
  73. package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
  74. package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
  75. package/templates/app-demo/public/fonts/fonts.css.example +144 -0
  76. package/templates/app-demo/public/logo.png.example +0 -0
  77. package/templates/app-demo/public/logo.svg.example +1 -0
  78. package/templates/app-demo/public/manifest.json.example +10 -0
  79. package/templates/app-demo/src/App.tsx.example +17 -0
  80. package/templates/app-demo/src/Routes.tsx.example +20 -0
  81. package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
  82. package/templates/app-demo/src/globals.css.example +4 -0
  83. package/templates/app-demo/src/main.tsx.example +27 -0
  84. package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
  85. package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
  86. package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
  87. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
  88. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
  89. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
  90. package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
  91. package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
  92. package/templates/app-demo/src/themes.css.example +179 -0
  93. package/templates/app-demo/tsconfig.json.example +9 -0
  94. package/templates/app-demo/vite.config.ts.example +53 -0
  95. package/templates/app-next/.env.example +92 -0
  96. package/templates/app-next/next.config.ts.example +8 -0
  97. package/templates/app-next/postcss.config.js.example +58 -0
  98. package/templates/app-next/service-account-key.json.example +2 -0
  99. package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
  100. package/templates/app-next/src/app/layout.tsx.example +52 -0
  101. package/templates/app-next/src/app/not-found.tsx.example +21 -0
  102. package/templates/app-next/src/config/app.ts.example +75 -0
  103. package/templates/app-next/src/config/legal.ts.example +170 -0
  104. package/templates/app-next/src/globals.css.example +15 -0
  105. package/templates/app-next/src/locales/dndev_en.json.example +516 -0
  106. package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
  107. package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  108. package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
  109. package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
  110. package/templates/app-next/src/themes.css.example +179 -0
  111. package/templates/app-next/tsconfig.json.example +11 -0
  112. package/templates/app-payload/.env.example +28 -0
  113. package/templates/app-payload/README.md.example +233 -0
  114. package/templates/app-payload/collections/Company.ts.example +125 -0
  115. package/templates/app-payload/collections/Hero.ts.example +62 -0
  116. package/templates/app-payload/collections/Media.ts.example +41 -0
  117. package/templates/app-payload/collections/Products.ts.example +115 -0
  118. package/templates/app-payload/collections/Services.ts.example +104 -0
  119. package/templates/app-payload/collections/Testimonials.ts.example +92 -0
  120. package/templates/app-payload/collections/Users.ts.example +35 -0
  121. package/templates/app-payload/src/server.ts.example +79 -0
  122. package/templates/app-payload/tsconfig.json.example +24 -0
  123. package/templates/app-vite/.env.example +77 -0
  124. package/templates/app-vite/index.html.example +127 -0
  125. package/templates/app-vite/service-account-key.json.example +2 -0
  126. package/templates/app-vite/src/App.tsx.example +39 -0
  127. package/templates/app-vite/src/Routes.tsx.example +16 -0
  128. package/templates/app-vite/src/config/app.ts.example +75 -0
  129. package/templates/app-vite/src/config/legal.ts.example +170 -0
  130. package/templates/app-vite/src/globals.css.example +11 -0
  131. package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
  132. package/templates/app-vite/src/main.tsx.example +21 -0
  133. package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
  134. package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
  135. package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  136. package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
  137. package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
  138. package/templates/app-vite/src/pages/locales/README.md.example +1 -0
  139. package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
  140. package/templates/app-vite/src/themes.css.example +179 -0
  141. package/templates/app-vite/tsconfig.json.example +9 -0
  142. package/templates/app-vite/vite.config.ts.example +9 -0
  143. package/templates/functions-firebase/README.md.example +129 -0
  144. package/templates/functions-firebase/build.mjs.example +52 -0
  145. package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
  146. package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
  147. package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
  148. package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  149. package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  150. package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
  151. package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  152. package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  153. package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  154. package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
  155. package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  156. package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  157. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
  158. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  159. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
  160. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
  161. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
  162. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  163. package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
  164. package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  165. package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  166. package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  167. package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  168. package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  169. package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
  170. package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  171. package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  172. package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
  173. package/templates/functions-firebase/functions.yaml.example +14 -0
  174. package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  175. package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  176. package/templates/functions-firebase/src/auth/index.ts.example +11 -0
  177. package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  178. package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  179. package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  180. package/templates/functions-firebase/src/billing/index.ts.example +10 -0
  181. package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  182. package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  183. package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
  184. package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  185. package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
  186. package/templates/functions-firebase/src/crud/index.ts.example +12 -0
  187. package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
  188. package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  189. package/templates/functions-firebase/src/index.ts.example +45 -0
  190. package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  191. package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  192. package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  193. package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  194. package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  195. package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
  196. package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  197. package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  198. package/templates/functions-firebase/tsconfig.json.example +24 -0
  199. package/templates/functions-vercel/README.md.example +116 -0
  200. package/templates/functions-vercel/build.mjs.example +52 -0
  201. package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
  202. package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
  203. package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
  204. package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  205. package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  206. package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  207. package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  208. package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  209. package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  210. package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  211. package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  212. package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  213. package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  214. package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  215. package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  216. package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  217. package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  218. package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  219. package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  220. package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  221. package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  222. package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  223. package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
  224. package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
  225. package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  226. package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  227. package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  228. package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  229. package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  230. package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  231. package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  232. package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  233. package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  234. package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  235. package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  236. package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  237. package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  238. package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  239. package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  240. package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  241. package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  242. package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  243. package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  244. package/templates/functions-vercel/tsconfig.json.example +24 -0
  245. package/templates/functions-vercel/vercel.json.example +14 -0
  246. package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
  247. package/templates/github/workflows/firebase-deploy.yml.example +79 -0
  248. package/templates/root-consumer/.env.example +19 -0
  249. package/templates/root-consumer/.gitignore.example +82 -0
  250. package/templates/root-consumer/.prettierrc.cjs.example +12 -0
  251. package/templates/root-consumer/CLAUDE.md.example +73 -0
  252. package/templates/root-consumer/README.md.example +295 -0
  253. package/templates/root-consumer/bunfig.toml.example +68 -0
  254. package/templates/root-consumer/eslint.config.js.example +336 -0
  255. package/templates/root-consumer/firebase.json.example +348 -0
  256. package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
  257. package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
  258. package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
  259. package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
  260. package/templates/root-consumer/guides/CLI.md.example +293 -0
  261. package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
  262. package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
  263. package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
  264. package/templates/root-consumer/guides/FEATURES.md.example +286 -0
  265. package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
  266. package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
  267. package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
  268. package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
  269. package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
  270. package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
  271. package/templates/root-consumer/guides/INDEX.md.example +50 -0
  272. package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
  273. package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
  274. package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
  275. package/templates/root-consumer/guides/STYLING.md.example +273 -0
  276. package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
  277. package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
  278. package/templates/root-consumer/tsconfig.functions.json.example +15 -0
  279. package/templates/root-consumer/tsconfig.json.example +18 -0
  280. package/templates/root-consumer/turbo.json.example +46 -0
  281. package/templates/root-consumer/vercel.json.example +124 -0
@@ -0,0 +1,516 @@
1
+ {
2
+ "signIn": "Sign In",
3
+ "choosePlatform": "Choose a platform to sign in with",
4
+ "providers": {
5
+ "google": "Google",
6
+ "facebook": "Facebook",
7
+ "github": "GitHub",
8
+ "twitter": "Twitter",
9
+ "microsoft": "Microsoft",
10
+ "yahoo": "Yahoo",
11
+ "apple": "Apple"
12
+ },
13
+ "buttons": {
14
+ "signIn": "Sign in with {{provider}}",
15
+ "continue": "Continue with {{provider}}",
16
+ "verify": "Verify Email",
17
+ "sendVerification": "Send Verification Email",
18
+ "signOut": "Sign Out",
19
+ "loading": "Loading..."
20
+ },
21
+ "accountLinking": {
22
+ "title": "Account Linking Required",
23
+ "message": "This email is already associated with different sign-in methods ({{methods}}). Please sign in using one of those methods to link your accounts.",
24
+ "instruction": "Please sign in with one of the following methods to link your accounts:",
25
+ "explanation": "By signing in, your accounts will be automatically linked, allowing you to use either sign-in method in the future.",
26
+ "success": "Accounts successfully linked!",
27
+ "error": "Failed to link accounts. Please try again.",
28
+ "emailLabel": "Email:"
29
+ },
30
+ "emailVerification": {
31
+ "title": "Email Verification",
32
+ "status": {
33
+ "verified": "Your email is verified.",
34
+ "unverified": "Please verify your email to access all features."
35
+ },
36
+ "sending": "Sending verification email...",
37
+ "success": "Verification email sent! Please check your inbox.",
38
+ "alreadyVerified": "Your email has already been verified.",
39
+ "notSignedIn": "You must be signed in to verify your email.",
40
+ "error": "Failed to send verification email. Please try again."
41
+ },
42
+ "errors": {
43
+ "auth/popup-closed-by-user": "The sign in popup was closed before completion.",
44
+ "auth/cancelled-popup-request": "The sign in popup was cancelled.",
45
+ "auth/popup-blocked": "The sign in popup was blocked by the browser.",
46
+ "auth/email-already-in-use": "This email is already registered.",
47
+ "auth/invalid-email": "The email address is invalid.",
48
+ "auth/operation-not-allowed": "This sign in method is not enabled.",
49
+ "auth/weak-password": "The password is too weak.",
50
+ "auth/user-disabled": "This account has been disabled.",
51
+ "auth/user-not-found": "No account found with this email.",
52
+ "auth/wrong-password": "Incorrect password.",
53
+ "auth/network-request-failed": "A network error occurred. Please try again.",
54
+ "auth/internal-error": "An internal error occurred. Please try again.",
55
+ "auth/invalid-credential": "The provided credential is invalid.",
56
+ "auth/account-exists-with-different-credential": "An account already exists with the same email address but different sign-in credentials.",
57
+ "auth/provider-not-enabled": "{{provider}} authentication is not enabled",
58
+ "auth/unknown-provider": "Unknown provider: {{provider}}",
59
+ "auth/missing-provider": "Authentication provider is not configured",
60
+ "auth/no-user-signed-in": "No user is currently signed in",
61
+ "auth/oauth-incomplete": "Authentication flow incomplete. Please try signing in again.",
62
+ "fallback": {
63
+ "title": "Authentication Required",
64
+ "description": "You need to sign in to access this page.",
65
+ "chooseProvider": "Choose your preferred sign-in method",
66
+ "authOptions": "Authentication options",
67
+ "secure": "Your data is secure and encrypted.",
68
+ "terms": "By signing in, you agree to our Terms of Service."
69
+ },
70
+ "genericError": "Authentication failed. Please try again.",
71
+ "fieldUpdate": "Failed to update {{field}}",
72
+ "hiddenField": "Error rendering hidden field {{field}}",
73
+ "unsupportedFieldType": "Unsupported field type: {{type}}",
74
+ "fieldRendering": "Error rendering field {{field}}",
75
+ "fallingBackToTextField": "Using text field for unsupported type {{type}}",
76
+ "invalidFieldProps": "Invalid configuration for field {{field}}"
77
+ },
78
+ "status": {
79
+ "loading": "Loading...",
80
+ "authenticating": "Authenticating...",
81
+ "verifying": "Verifying...",
82
+ "checking": "Checking permissions..."
83
+ },
84
+ "aria": {
85
+ "signInOptions": "Sign in options",
86
+ "signInButton": "Sign in with {{provider}}",
87
+ "loadingState": "Loading authentication",
88
+ "errorAlert": "Authentication error",
89
+ "successAlert": "Success",
90
+ "accountLinkingRequired": "Account linking required",
91
+ "verificationRequired": "Email verification required"
92
+ },
93
+ "home": {
94
+ "title": "DoNotDev",
95
+ "description": "DoNotDev is a platform for building web applications with TypeScript and pure CSS.",
96
+ "getStarted": "Get Started",
97
+ "whyChooseDoNotDev": "Why Choose DoNotDev?",
98
+ "openSource": "Open Source",
99
+ "freeAndOpenSource": "Free and open-source with a vibrant community.",
100
+ "customizable": "Customizable",
101
+ "flexibleComponents": "Flexible components to tailor your project needs.",
102
+ "developerFocused": "Developer-Focused",
103
+ "scalableArchitecture": "Scalable Architecture",
104
+ "secureByDesign": "Secure by Design",
105
+ "fastIntegration": "Fast Integration",
106
+ "scaleEffortlessly": "Scale effortlessly from prototypes to enterprise solutions.",
107
+ "header": {
108
+ "purchase": "Purchase"
109
+ }
110
+ },
111
+ "actions": {
112
+ "create": "Create",
113
+ "update": "Update",
114
+ "delete": "Delete",
115
+ "cancel": "Cancel",
116
+ "save": "Save",
117
+ "confirm": "Confirm",
118
+ "back": "Back",
119
+ "next": "Next",
120
+ "previous": "Previous",
121
+ "search": "Search",
122
+ "searchPlaceholder": "Search...",
123
+ "filter": "Filter",
124
+ "clear": "Clear",
125
+ "reset": "Reset",
126
+ "apply": "Apply",
127
+ "select": "Select",
128
+ "upload": "Upload",
129
+ "download": "Download",
130
+ "close": "Close"
131
+ },
132
+ "messages": {
133
+ "createSuccess": "{{entity}} created successfully",
134
+ "updateSuccess": "{{entity}} updated successfully",
135
+ "deleteSuccess": "{{entity}} deleted successfully",
136
+ "error": "An error occurred",
137
+ "loading": "Loading...",
138
+ "noResults": "No results found",
139
+ "confirmDelete": "Are you sure you want to delete this {{entity}}?",
140
+ "unsavedChanges": "You have unsaved changes",
141
+ "sessionExpired": "Your session has expired",
142
+ "networkError": "Network error occurred",
143
+ "unauthorized": "Unauthorized access",
144
+ "forbidden": "Access forbidden",
145
+ "serverError": "Server error occurred",
146
+ "notFound": {
147
+ "title": "Page Not Found",
148
+ "description": "The page you're looking for doesn't exist or has been moved.",
149
+ "suggestions": "You might be looking for:",
150
+ "goHome": "Go Home",
151
+ "goBack": "Go Back"
152
+ }
153
+ },
154
+ "nav": {
155
+ "signIn": "Sign in"
156
+ },
157
+ "pagination": {
158
+ "showing": "Showing {{from}} to {{to}} of {{total}} entries",
159
+ "previous": "Previous",
160
+ "next": "Next",
161
+ "page": "Page {{page}} of {{total}}"
162
+ },
163
+ "filters": {
164
+ "title": "Filters",
165
+ "apply": "Apply Filters",
166
+ "clear": "Clear Filters",
167
+ "noResults": "No results match your filters",
168
+ "selected": "{{count}} selected"
169
+ },
170
+ "settings": {
171
+ "title": "Settings",
172
+ "theme": "Theme",
173
+ "language": "Language",
174
+ "clearCache": {
175
+ "title": "Clear Cache",
176
+ "localStorage": "Local Storage",
177
+ "sessionStorage": "Session Storage",
178
+ "applicationCache": "Application Cache",
179
+ "serviceWorker": "Service Worker",
180
+ "cookies": "Cookies",
181
+ "indexedDB": "IndexedDB",
182
+ "webSQL": "WebSQL",
183
+ "memoryCache": "Memory Cache",
184
+ "button": "Clear Cache",
185
+ "clearing": "Clearing...",
186
+ "error": "Error clearing cache",
187
+ "success": "Cache cleared successfully: {{items}}",
188
+ "noItemsCleared": "No cache items were cleared"
189
+ }
190
+ },
191
+ "common": {
192
+ "app": {
193
+ "name": "DoNotDev App"
194
+ },
195
+ "defaultTitle": "Page",
196
+ "defaultDescription": "Page description",
197
+ "locale": "en_US",
198
+ "themeSelector": {
199
+ "changeTheme": "Change Theme",
200
+ "tooltipWithTransition": "Change Theme: {{current}} → {{next}}",
201
+ "tooltipWithCurrent": "Change Theme: {{current}}",
202
+ "tooltipWithNext": "Change Theme: Switch to {{next}}"
203
+ },
204
+ "languageSelector": {
205
+ "changeLanguage": "Change Language"
206
+ }
207
+ },
208
+ "fields": {
209
+ "array": "Array",
210
+ "boolean": "Boolean",
211
+ "checkbox": "Checkbox",
212
+ "date": "Date",
213
+ "datetime-local": "Date and Time",
214
+ "email": "Email",
215
+ "file": "File",
216
+ "geopoint": "Location",
217
+ "image": "Image",
218
+ "map": "Map",
219
+ "multiselect": "Multiple Select",
220
+ "number": "Number",
221
+ "password": "Password",
222
+ "phone": "Phone Number",
223
+ "radio": "Radio Buttons",
224
+ "range": "Range",
225
+ "reference": "Reference",
226
+ "select": "Select",
227
+ "tel": "Phone Number",
228
+ "text": "Text",
229
+ "textarea": "Text Area",
230
+ "timestamp": "Timestamp",
231
+ "url": "URL"
232
+ },
233
+ "text": {
234
+ "required": "{{field}} is required",
235
+ "minLength": "{{field}} must be at least {{min}} characters",
236
+ "maxLength": "{{field}} must not exceed {{max}} characters",
237
+ "email": "Please enter a valid email address",
238
+ "url": "Please enter a valid URL",
239
+ "matches": "{{field}} must match the pattern {{pattern}}",
240
+ "unique": "{{field}} must be unique",
241
+ "alphanumeric": "{{field}} must only contain letters and numbers",
242
+ "lettersOnly": "{{field}} must only contain letters"
243
+ },
244
+ "number": {
245
+ "required": "{{field}} is required",
246
+ "min": "{{field}} must be at least {{min}}",
247
+ "max": "{{field}} must not exceed {{max}}",
248
+ "integer": "{{field}} must be a whole number",
249
+ "positive": "{{field}} must be positive",
250
+ "negative": "{{field}} must be negative",
251
+ "between": "{{field}} must be between {{min}} and {{max}}",
252
+ "precision": "{{field}} must have at most {{precision}} decimal places"
253
+ },
254
+ "date": {
255
+ "required": "{{field}} is required",
256
+ "min": "{{field}} must be after {{min}}",
257
+ "max": "{{field}} must be before {{max}}",
258
+ "between": "{{field}} must be between {{min}} and {{max}}",
259
+ "format": "Please enter a valid date",
260
+ "future": "{{field}} must be in the future",
261
+ "past": "{{field}} must be in the past",
262
+ "today": "{{field}} must be today"
263
+ },
264
+ "select": {
265
+ "required": "Please select a {{field}}",
266
+ "invalid": "Invalid selection for {{field}}",
267
+ "min": "Please select at least {{min}} options",
268
+ "max": "Please select no more than {{max}} options"
269
+ },
270
+ "boolean": {
271
+ "required": "{{field}} must be selected"
272
+ },
273
+ "array": {
274
+ "required": "At least one {{field}} is required",
275
+ "minItems": "Please select at least {{min}} {{field}}",
276
+ "maxItems": "Cannot select more than {{max}} {{field}}",
277
+ "uniqueItems": "All {{field}} must be unique"
278
+ },
279
+ "file": {
280
+ "required": "Please select a file",
281
+ "maxSize": "File size must not exceed {{max}}",
282
+ "minSize": "File size must be at least {{min}}",
283
+ "type": "File type must be {{types}}",
284
+ "dimensions": "Image dimensions must be {{width}}x{{height}}"
285
+ },
286
+ "custom": {
287
+ "passwordMatch": "Passwords must match",
288
+ "phoneNumber": "Please enter a valid phone number",
289
+ "postalCode": "Please enter a valid postal code",
290
+ "currency": "Please enter a valid amount",
291
+ "color": "Please enter a valid color code"
292
+ },
293
+ "footer": {
294
+ "landing": {
295
+ "company": {
296
+ "defaultName": "Company",
297
+ "description": "Build better products faster with our comprehensive development platform."
298
+ },
299
+ "social": {
300
+ "twitter": "Twitter",
301
+ "github": "GitHub",
302
+ "discord": "Discord"
303
+ },
304
+ "sections": {
305
+ "product": {
306
+ "title": "Product",
307
+ "features": "Features",
308
+ "pricing": "Pricing",
309
+ "docs": "Docs",
310
+ "updates": "Updates"
311
+ },
312
+ "support": {
313
+ "title": "Support",
314
+ "help": "Help",
315
+ "contact": "Contact",
316
+ "status": "Status",
317
+ "community": "Community"
318
+ }
319
+ }
320
+ },
321
+ "legal": {
322
+ "allRightsReserved": "All rights reserved.",
323
+ "cookieSettings": "Cookie Settings",
324
+ "legalNotice": "Legal Notice",
325
+ "privacyPolicy": "Privacy Policy",
326
+ "termsOfService": "Terms of Service",
327
+ "builtWith": "Made with ❤️ & DoNotDev ©",
328
+ "collapse": "Collapse footer",
329
+ "expand": "Expand footer"
330
+ }
331
+ },
332
+ "oauth": {
333
+ "connectServices": "Connect Services",
334
+ "chooseService": "Choose a service to connect with your account",
335
+ "noProvidersEnabled": "No OAuth Providers",
336
+ "noProvidersMessage": "No OAuth providers are currently enabled. Please check your configuration.",
337
+ "checkConfiguration": "Please check your OAuth provider configuration.",
338
+ "noProviders": "No OAuth Providers",
339
+ "aria": {
340
+ "connectionOptions": "OAuth connection options"
341
+ }
342
+ },
343
+ "search": {
344
+ "ariaLabel": "Search",
345
+ "label": "Search"
346
+ },
347
+ "goTo": {
348
+ "ariaLabel": "Go to page",
349
+ "label": "Go to"
350
+ },
351
+ "globalGoTo": {
352
+ "placeholder": "Filter routes or navigate to a page...",
353
+ "noResults": "No routes found.",
354
+ "favorites": "Favorites",
355
+ "allPages": "All Pages",
356
+ "addFavorite": "Add to favorites",
357
+ "removeFavorite": "Remove from favorites"
358
+ },
359
+ "auth": {
360
+ "loading": "Loading...",
361
+ "defaultUser": "User",
362
+ "signOut": "Sign Out",
363
+ "deleteAccount": {
364
+ "label": "Delete Account",
365
+ "confirm": {
366
+ "title": "Delete Your Account?",
367
+ "description": "This action cannot be undone. This will permanently delete your account.",
368
+ "cancel": "Cancel",
369
+ "delete": "Delete My Account",
370
+ "deleting": "Deleting...",
371
+ "whatDeleted": "What will be deleted:",
372
+ "credentials": "Your account and authentication credentials",
373
+ "profile": "Your profile information",
374
+ "oauth": "All connected OAuth providers",
375
+ "subscriptions": "Active subscriptions (will be canceled)",
376
+ "whatKept": "What will be kept (anonymized):",
377
+ "billing": "Billing history for tax/accounting purposes",
378
+ "invoices": "Past invoices and transaction records",
379
+ "checkbox": "I understand this action cannot be undone"
380
+ },
381
+ "reauth": {
382
+ "title": "Confirm Your Identity",
383
+ "description": "For security, please re-enter your password to continue.",
384
+ "cancel": "Cancel",
385
+ "continue": "Continue",
386
+ "verifying": "Verifying...",
387
+ "password": "Password",
388
+ "passwordPlaceholder": "Enter your password"
389
+ }
390
+ },
391
+ "profile": "Profile",
392
+ "signIn": "Sign In",
393
+ "signingIn": "Signing in...",
394
+ "creatingAccount": "Creating account...",
395
+ "email": "Email",
396
+ "password": "Password",
397
+ "emailHint": "Enter your email address",
398
+ "passwordHintSignin": "Enter your password",
399
+ "passwordHintSignup": "Enter a password (minimum 6 characters)",
400
+ "signInForm": "Sign in form",
401
+ "signUpForm": "Sign up form",
402
+ "emailPlaceholder": "Enter your email address",
403
+ "passwordPlaceholder": "Enter your password",
404
+ "userMenu": "User menu",
405
+ "settings": "Settings",
406
+ "account": "Account",
407
+ "logout": "Logout",
408
+ "login": "Login",
409
+ "register": "Register",
410
+ "forgotPassword": "Forgot Password?",
411
+ "emailVerification": "Email Verification",
412
+ "resendEmail": "Resend Email",
413
+ "verificationRequired": "Please verify your email",
414
+ "verificationSuccess": "Email verified successfully",
415
+ "verificationError": "Verification failed",
416
+ "passwordReset": "Password Reset",
417
+ "passwordResetSent": "Password reset email sent",
418
+ "passwordResetSuccess": "Password reset successfully",
419
+ "passwordResetError": "Password reset failed",
420
+ "accountLinking": "Account Linking",
421
+ "linkAccount": "Link Account",
422
+ "unlinkAccount": "Unlink Account",
423
+ "accountLinked": "Account linked successfully",
424
+ "accountUnlinked": "Account unlinked successfully",
425
+ "linkError": "Failed to link account",
426
+ "unlinkError": "Failed to unlink account",
427
+ "checkEmail": "Check your email",
428
+ "verificationSent": "We've sent you a verification link to prove ownership of your account.",
429
+ "errorTitle": "Account Linking Error",
430
+ "networkError": "Network error",
431
+ "tryAgain": "Try Again",
432
+ "cancel": "Cancel",
433
+ "confirm": "Confirm",
434
+ "save": "Save",
435
+ "edit": "Edit",
436
+ "delete": "Delete",
437
+ "close": "Close",
438
+ "back": "Back",
439
+ "next": "Next",
440
+ "previous": "Previous",
441
+ "submit": "Submit",
442
+ "error": "Error",
443
+ "success": "Success",
444
+ "warning": "Warning",
445
+ "info": "Information",
446
+ "popup": "Popup",
447
+ "redirect": "Redirect",
448
+ "toggleMethod": "Toggle between popup and redirect authentication",
449
+ "popupDescription": "A popup window will open for authentication",
450
+ "redirectDescription": "You will be redirected to complete authentication",
451
+ "fedcmRequired": "Google One Tap requires a modern browser (Chrome 116+ or Edge 116+)"
452
+ },
453
+ "copyToClipboard": "Copy to clipboard",
454
+ "copied": "Copied!",
455
+ "copyPassword": "Copy password",
456
+ "table": {
457
+ "searchPlaceholder": "Search...",
458
+ "filters": "Filters",
459
+ "selectAllRows": "Select all rows",
460
+ "selectRow": "Select row {{index}}",
461
+ "showingResults": "Showing {{from}} to {{to}} of {{total}} results",
462
+ "previous": "Previous",
463
+ "next": "Next",
464
+ "page": "Page {{current}} of {{total}}"
465
+ },
466
+ "language": {
467
+ "selectLanguage": "Select Language",
468
+ "searchLanguages": "Search languages...",
469
+ "noLanguagesFound": "No languages found",
470
+ "changeLanguage": "Change Language"
471
+ },
472
+ "form": {
473
+ "submit": "Submit",
474
+ "cancel": "Cancel",
475
+ "submitting": "Submitting...",
476
+ "loading": "Loading...",
477
+ "add": "Add",
478
+ "remove": "Remove",
479
+ "typeAndPressAdd": "Type and press Add...",
480
+ "enterLocationData": "Enter location data (JSON)"
481
+ },
482
+ "navigation": {
483
+ "more": "More",
484
+ "home": "Home"
485
+ },
486
+ "pwa": {
487
+ "update": {
488
+ "title": "Update available",
489
+ "description": "A new version is ready. Refresh to update.",
490
+ "button": "Update",
491
+ "altText": "Update application"
492
+ }
493
+ },
494
+ "code": {
495
+ "copyCode": "Copy code",
496
+ "copied": "Copied!",
497
+ "copyCodeToClipboard": "Copy code to clipboard"
498
+ },
499
+ "inspector": {
500
+ "pageSource": "Page Source",
501
+ "inspectPageSourceCode": "Inspect page source code"
502
+ },
503
+ "routeError": {
504
+ "title": "Something went wrong",
505
+ "description": "We encountered an error while loading this page.",
506
+ "dataSafe": "Don't worry, your data is safe.",
507
+ "errorId": "Error ID",
508
+ "errorMessage": "Error Message",
509
+ "copied": "Copied",
510
+ "copyDetails": "Copy Details",
511
+ "tryAgain": "Try Again",
512
+ "goHome": "Go Home",
513
+ "goBack": "Go Back",
514
+ "contactSupport": "If the problem persists, please contact support."
515
+ }
516
+ }
@@ -0,0 +1,21 @@
1
+ import './globals.css';
2
+ import React from 'react';
3
+ import ReactDOM from 'react-dom/client';
4
+ import { App } from './App';
5
+
6
+ // ✅ SHELL LOADER: BaseStoresInitializer handles removal when stores are ready
7
+ // (removed early removal - BaseStoresInitializer has the knowledge of when stores are ready)
8
+
9
+ // Ensure the root element exists
10
+ const rootElement = document.getElementById('root');
11
+ if (!rootElement) {
12
+ throw new Error(
13
+ 'Root element not found. Did you remove the root div from index.html?'
14
+ );
15
+ }
16
+
17
+ ReactDOM.createRoot(rootElement).render(
18
+ <React.StrictMode>
19
+ <App />
20
+ </React.StrictMode>
21
+ );
@@ -0,0 +1,22 @@
1
+ // apps/{{appName}}/src/pages/HomePage.tsx
2
+
3
+ /**
4
+ * @fileoverview Home page component
5
+ * @description Main landing page for the application
6
+ * @version 0.0.1
7
+ * @since 0.0.1
8
+ * @author AMBROISE PARK Consulting
9
+ */
10
+
11
+ import { HomeTemplate } from '@donotdev/templates';
12
+ import { Home } from 'lucide-react';
13
+ import type { PageMeta } from '@donotdev/core';
14
+
15
+ export const meta: PageMeta = {
16
+ title: 'Home',
17
+ icon: <Home />,
18
+ };
19
+
20
+ export default function HomePage() {
21
+ return <HomeTemplate />;
22
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @fileoverview Not found page component
3
+ * @description 404 error page for the application
4
+ * @version 0.0.1
5
+ * @since 0.0.1
6
+ * @author AMBROISE PARK Consulting
7
+ */
8
+
9
+ /**
10
+ * Not found page translation namespace
11
+ *
12
+ * @version 0.0.1
13
+ * @since 0.0.1
14
+ * @author AMBROISE PARK Consulting
15
+ */
16
+ export const NAMESPACE = 'dndev';
17
+
18
+ import type { PageMeta } from '@donotdev/core';
19
+
20
+ /**
21
+ * Not found page metadata configuration
22
+ *
23
+ * @version 0.0.1
24
+ * @since 0.0.1
25
+ * @author AMBROISE PARK Consulting
26
+ */
27
+ export const meta: PageMeta = {
28
+ namespace: NAMESPACE,
29
+ route: '/404',
30
+ hideFromMenu: true,
31
+ };
32
+
33
+ export { NotFoundPage as default } from '@donotdev/ui';
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @fileoverview Legal Notice Page
3
+ * @description Legal notice page using the reusable template
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+
10
+ import { Building } from 'lucide-react';
11
+
12
+ import { type PageMeta } from '@donotdev/core';
13
+ import { LegalNoticeTemplate } from '@donotdev/templates';
14
+ import { PageContainer } from '@donotdev/ui';
15
+
16
+ import { legalConfig } from '../../config/legal';
17
+
18
+ /**
19
+ * Legal Notice page translation namespace
20
+ *
21
+ * @version 0.0.1
22
+ * @since 0.0.1
23
+ * @author AMBROISE PARK Consulting
24
+ */
25
+ export const NAMESPACE = 'legalNotice';
26
+
27
+ /**
28
+ * Legal Notice page metadata configuration
29
+ *
30
+ * @version 0.0.1
31
+ * @since 0.0.1
32
+ * @author AMBROISE PARK Consulting
33
+ */
34
+ export const meta: PageMeta = {
35
+ namespace: NAMESPACE,
36
+ icon: <Building />,
37
+ hideFromMenu: true,
38
+ };
39
+
40
+ /**
41
+ * Legal Notice Page Component
42
+ *
43
+ * @version 0.0.1
44
+ * @since 0.0.1
45
+ * @author AMBROISE PARK Consulting
46
+ *
47
+ * Uses the reusable LegalNoticeTemplate with centralized legal config
48
+ */
49
+ function LegalNoticePage() {
50
+ return (
51
+ <PageContainer>
52
+ <LegalNoticeTemplate
53
+ publisherName={legalConfig.company.name}
54
+ publisherType="company"
55
+ legalStatus={legalConfig.company.legalStatus}
56
+ registrationNumber={legalConfig.company.registrationNumber}
57
+ vatNumber={legalConfig.company.vatNumber}
58
+ shareCapital={legalConfig.company.shareCapital}
59
+ registeredOffice={legalConfig.contact.address}
60
+ email={legalConfig.contact.email}
61
+ phone={legalConfig.contact.phone}
62
+ directorName={legalConfig.director.name}
63
+ directorRole={legalConfig.director.role}
64
+ hostingProvider={legalConfig.hosting.provider}
65
+ hostingAddress={legalConfig.hosting.address}
66
+ hostingContact={legalConfig.hosting.contact}
67
+ sections={legalConfig.sections.legalNotice}
68
+ lastUpdated={legalConfig.lastUpdated?.legalNotice}
69
+ />
70
+ </PageContainer>
71
+ );
72
+ }
73
+
74
+ export default LegalNoticePage;
75
+