@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.
- package/LICENSE.md +48 -0
- package/README.md +291 -0
- package/dependencies-matrix.json +694 -0
- package/dist/bin/commands/build.d.ts +11 -0
- package/dist/bin/commands/build.d.ts.map +1 -0
- package/dist/bin/commands/build.js +8162 -0
- package/dist/bin/commands/build.js.map +1 -0
- package/dist/bin/commands/bump.d.ts +11 -0
- package/dist/bin/commands/bump.d.ts.map +1 -0
- package/dist/bin/commands/bump.js +8004 -0
- package/dist/bin/commands/bump.js.map +1 -0
- package/dist/bin/commands/cacheout.d.ts +11 -0
- package/dist/bin/commands/cacheout.d.ts.map +1 -0
- package/dist/bin/commands/cacheout.js +7630 -0
- package/dist/bin/commands/cacheout.js.map +1 -0
- package/dist/bin/commands/create-app.d.ts +11 -0
- package/dist/bin/commands/create-app.d.ts.map +1 -0
- package/dist/bin/commands/create-app.js +9032 -0
- package/dist/bin/commands/create-app.js.map +1 -0
- package/dist/bin/commands/create-project.d.ts +11 -0
- package/dist/bin/commands/create-project.d.ts.map +1 -0
- package/dist/bin/commands/create-project.js +9643 -0
- package/dist/bin/commands/create-project.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +11 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -0
- package/dist/bin/commands/deploy.js +9007 -0
- package/dist/bin/commands/deploy.js.map +1 -0
- package/dist/bin/commands/dev.d.ts +11 -0
- package/dist/bin/commands/dev.d.ts.map +1 -0
- package/dist/bin/commands/dev.js +7892 -0
- package/dist/bin/commands/dev.js.map +1 -0
- package/dist/bin/commands/emu.d.ts +11 -0
- package/dist/bin/commands/emu.d.ts.map +1 -0
- package/dist/bin/commands/emu.js +8302 -0
- package/dist/bin/commands/emu.js.map +1 -0
- package/dist/bin/commands/format.d.ts +11 -0
- package/dist/bin/commands/format.d.ts.map +1 -0
- package/dist/bin/commands/format.js +8009 -0
- package/dist/bin/commands/format.js.map +1 -0
- package/dist/bin/commands/lint.d.ts +11 -0
- package/dist/bin/commands/lint.d.ts.map +1 -0
- package/dist/bin/commands/lint.js +7481 -0
- package/dist/bin/commands/lint.js.map +1 -0
- package/dist/bin/commands/preview.d.ts +11 -0
- package/dist/bin/commands/preview.d.ts.map +1 -0
- package/dist/bin/commands/preview.js +7909 -0
- package/dist/bin/commands/preview.js.map +1 -0
- package/dist/bin/commands/sync-secrets.d.ts +11 -0
- package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
- package/dist/bin/commands/sync-secrets.js +8227 -0
- package/dist/bin/commands/sync-secrets.js.map +1 -0
- package/dist/bin/dndev.js +222 -0
- package/dist/bin/donotdev.js +222 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12820 -0
- package/dist/index.js.map +1 -0
- package/package.json +71 -0
- package/templates/app-demo/index.html.example +20 -0
- package/templates/app-demo/public/favicon.ico.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
- package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
- package/templates/app-demo/public/fonts/fonts.css.example +144 -0
- package/templates/app-demo/public/logo.png.example +0 -0
- package/templates/app-demo/public/logo.svg.example +1 -0
- package/templates/app-demo/public/manifest.json.example +10 -0
- package/templates/app-demo/src/App.tsx.example +17 -0
- package/templates/app-demo/src/Routes.tsx.example +20 -0
- package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
- package/templates/app-demo/src/globals.css.example +4 -0
- package/templates/app-demo/src/main.tsx.example +27 -0
- package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
- package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
- package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
- package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
- package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
- package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
- package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
- package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
- package/templates/app-demo/src/themes.css.example +179 -0
- package/templates/app-demo/tsconfig.json.example +9 -0
- package/templates/app-demo/vite.config.ts.example +53 -0
- package/templates/app-next/.env.example +92 -0
- package/templates/app-next/next.config.ts.example +8 -0
- package/templates/app-next/postcss.config.js.example +58 -0
- package/templates/app-next/service-account-key.json.example +2 -0
- package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
- package/templates/app-next/src/app/layout.tsx.example +52 -0
- package/templates/app-next/src/app/not-found.tsx.example +21 -0
- package/templates/app-next/src/config/app.ts.example +75 -0
- package/templates/app-next/src/config/legal.ts.example +170 -0
- package/templates/app-next/src/globals.css.example +15 -0
- package/templates/app-next/src/locales/dndev_en.json.example +516 -0
- package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
- package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
- package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
- package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
- package/templates/app-next/src/themes.css.example +179 -0
- package/templates/app-next/tsconfig.json.example +11 -0
- package/templates/app-payload/.env.example +28 -0
- package/templates/app-payload/README.md.example +233 -0
- package/templates/app-payload/collections/Company.ts.example +125 -0
- package/templates/app-payload/collections/Hero.ts.example +62 -0
- package/templates/app-payload/collections/Media.ts.example +41 -0
- package/templates/app-payload/collections/Products.ts.example +115 -0
- package/templates/app-payload/collections/Services.ts.example +104 -0
- package/templates/app-payload/collections/Testimonials.ts.example +92 -0
- package/templates/app-payload/collections/Users.ts.example +35 -0
- package/templates/app-payload/src/server.ts.example +79 -0
- package/templates/app-payload/tsconfig.json.example +24 -0
- package/templates/app-vite/.env.example +77 -0
- package/templates/app-vite/index.html.example +127 -0
- package/templates/app-vite/service-account-key.json.example +2 -0
- package/templates/app-vite/src/App.tsx.example +39 -0
- package/templates/app-vite/src/Routes.tsx.example +16 -0
- package/templates/app-vite/src/config/app.ts.example +75 -0
- package/templates/app-vite/src/config/legal.ts.example +170 -0
- package/templates/app-vite/src/globals.css.example +11 -0
- package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
- package/templates/app-vite/src/main.tsx.example +21 -0
- package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
- package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
- package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
- package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
- package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
- package/templates/app-vite/src/pages/locales/README.md.example +1 -0
- package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
- package/templates/app-vite/src/themes.css.example +179 -0
- package/templates/app-vite/tsconfig.json.example +9 -0
- package/templates/app-vite/vite.config.ts.example +9 -0
- package/templates/functions-firebase/README.md.example +129 -0
- package/templates/functions-firebase/build.mjs.example +52 -0
- package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
- package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
- package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
- package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
- package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
- package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
- package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
- package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
- package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
- package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
- package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
- package/templates/functions-firebase/functions.yaml.example +14 -0
- package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
- package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
- package/templates/functions-firebase/src/auth/index.ts.example +11 -0
- package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
- package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
- package/templates/functions-firebase/src/billing/index.ts.example +10 -0
- package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
- package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
- package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
- package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
- package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
- package/templates/functions-firebase/src/crud/index.ts.example +12 -0
- package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
- package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
- package/templates/functions-firebase/src/index.ts.example +45 -0
- package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
- package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
- package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
- package/templates/functions-firebase/tsconfig.json.example +24 -0
- package/templates/functions-vercel/README.md.example +116 -0
- package/templates/functions-vercel/build.mjs.example +52 -0
- package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
- package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
- package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
- package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
- package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
- package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
- package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
- package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
- package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
- package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
- package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
- package/templates/functions-vercel/tsconfig.json.example +24 -0
- package/templates/functions-vercel/vercel.json.example +14 -0
- package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
- package/templates/github/workflows/firebase-deploy.yml.example +79 -0
- package/templates/root-consumer/.env.example +19 -0
- package/templates/root-consumer/.gitignore.example +82 -0
- package/templates/root-consumer/.prettierrc.cjs.example +12 -0
- package/templates/root-consumer/CLAUDE.md.example +73 -0
- package/templates/root-consumer/README.md.example +295 -0
- package/templates/root-consumer/bunfig.toml.example +68 -0
- package/templates/root-consumer/eslint.config.js.example +336 -0
- package/templates/root-consumer/firebase.json.example +348 -0
- package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
- package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
- package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
- package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
- package/templates/root-consumer/guides/CLI.md.example +293 -0
- package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
- package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
- package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
- package/templates/root-consumer/guides/FEATURES.md.example +286 -0
- package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
- package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
- package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
- package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
- package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
- package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
- package/templates/root-consumer/guides/INDEX.md.example +50 -0
- package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
- package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
- package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
- package/templates/root-consumer/guides/STYLING.md.example +273 -0
- package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
- package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
- package/templates/root-consumer/tsconfig.functions.json.example +15 -0
- package/templates/root-consumer/tsconfig.json.example +18 -0
- package/templates/root-consumer/turbo.json.example +46 -0
- package/templates/root-consumer/vercel.json.example +124 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/* apps/demo/src/themes.css */
|
|
2
|
+
|
|
3
|
+
/* ===========================
|
|
4
|
+
APP-WIDE SETTINGS
|
|
5
|
+
These apply to all themes - spacing, radius, shadows, routing animations
|
|
6
|
+
=========================== */
|
|
7
|
+
:root {
|
|
8
|
+
/* ===========================
|
|
9
|
+
ROUTING ANIMATIONS
|
|
10
|
+
Customize page transition animations
|
|
11
|
+
Pure CSS - zero JS overhead. Respects prefers-reduced-motion.
|
|
12
|
+
Override in themes.css: --routing-animation: slide; to change animation type
|
|
13
|
+
=========================== */
|
|
14
|
+
/* Single animation type (fade, slide, or none to disable) - app-wide */
|
|
15
|
+
/* --routing-animation: fade; */ /* fade | slide | none */
|
|
16
|
+
/* --routing-default-duration: var(--dur-normal); */ /* Animation duration */
|
|
17
|
+
|
|
18
|
+
/* Breakpoint-specific durations (all inherit from --routing-default-duration) */
|
|
19
|
+
/* --routing-mobile-duration: var(--routing-default-duration); */
|
|
20
|
+
/* --routing-tablet-duration: var(--routing-default-duration); */
|
|
21
|
+
/* --routing-desktop-duration: var(--routing-default-duration); */
|
|
22
|
+
/* --routing-wide-duration: var(--routing-default-duration); */
|
|
23
|
+
|
|
24
|
+
/* Examples: */
|
|
25
|
+
/* --routing-animation: slide; */ /* Use slide animation */
|
|
26
|
+
/* --routing-animation: none; */ /* Disable animations */
|
|
27
|
+
/* --routing-default-duration: 200ms; */ /* Faster animations */
|
|
28
|
+
|
|
29
|
+
/* ===========================
|
|
30
|
+
SPACING OVERRIDES
|
|
31
|
+
Customize spacing scale
|
|
32
|
+
=========================== */
|
|
33
|
+
/* --gap-sm: 0.5rem; */ /* 8px - tight spacing */
|
|
34
|
+
/* --gap-md: 1rem; */ /* 16px - medium spacing (default) */
|
|
35
|
+
/* --gap-lg: 2rem; */ /* 32px - large spacing */
|
|
36
|
+
|
|
37
|
+
/* ===========================
|
|
38
|
+
BORDER RADIUS OVERRIDES
|
|
39
|
+
Customize component corners
|
|
40
|
+
=========================== */
|
|
41
|
+
/* --radius-interactive: var(--radius-none); */ /* Buttons, links (default: square) */
|
|
42
|
+
/* --radius-surface: var(--radius-md); */ /* Cards, dialogs (default: 8px round) */
|
|
43
|
+
/* --radius-floating: var(--radius-none); */ /* Dropdowns, popovers (default: square) */
|
|
44
|
+
|
|
45
|
+
/* ===========================
|
|
46
|
+
SHADOW OVERRIDES
|
|
47
|
+
Customize elevation
|
|
48
|
+
=========================== */
|
|
49
|
+
/* --shadow-sm: ...; */ /* Small shadows */
|
|
50
|
+
/* --shadow-md: ...; */ /* Medium shadows (default) */
|
|
51
|
+
/* --shadow-xl: ...; */ /* Large shadows */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* ===========================
|
|
55
|
+
LIGHT THEME (High Contrast Light)
|
|
56
|
+
Background: White
|
|
57
|
+
Foreground: Black
|
|
58
|
+
=========================== */
|
|
59
|
+
:root.light {
|
|
60
|
+
--theme-icon: 'Sun';
|
|
61
|
+
--theme-label: 'Light';
|
|
62
|
+
--theme-is-dark: 0;
|
|
63
|
+
|
|
64
|
+
/* ===========================
|
|
65
|
+
1. USER SETS - 5 BRAND COLORS
|
|
66
|
+
=========================== */
|
|
67
|
+
--foreground: #000000;
|
|
68
|
+
--background: #ffffff;
|
|
69
|
+
--primary: #00bcd4; /* Cyan */
|
|
70
|
+
--secondary: #10b981; /* Green */
|
|
71
|
+
--accent: #ff9800; /* Orange */
|
|
72
|
+
|
|
73
|
+
/* ===========================
|
|
74
|
+
2. FRAMEWORK DEFAULTS - STATUS COLORS
|
|
75
|
+
(Override if needed)
|
|
76
|
+
=========================== */
|
|
77
|
+
--success: #10b981;
|
|
78
|
+
--warning: #f59e0b;
|
|
79
|
+
--destructive: #dc2626;
|
|
80
|
+
|
|
81
|
+
/* ===========================
|
|
82
|
+
3. AUTO-COMPUTED - SURFACES
|
|
83
|
+
(Plain sight computation for easy overriding)
|
|
84
|
+
=========================== */
|
|
85
|
+
--muted: color-mix(in oklab, var(--foreground) 5%, var(--background));
|
|
86
|
+
--muted-foreground: color-mix(in oklab, var(--foreground) 75%, transparent);
|
|
87
|
+
--border: color-mix(in oklab, var(--foreground) 15%, var(--background));
|
|
88
|
+
--input: var(--muted);
|
|
89
|
+
--ring: var(--primary);
|
|
90
|
+
|
|
91
|
+
--card: var(--background);
|
|
92
|
+
--card-foreground: var(--foreground);
|
|
93
|
+
--popover: var(--card);
|
|
94
|
+
--popover-foreground: var(--card-foreground);
|
|
95
|
+
--surface-1: var(--card);
|
|
96
|
+
|
|
97
|
+
/* ===========================
|
|
98
|
+
4. AUTO-COMPUTED - TEXT ON BRAND COLORS
|
|
99
|
+
(Mapped to foreground/background for consistency)
|
|
100
|
+
=========================== */
|
|
101
|
+
--primary-foreground: var(--foreground);
|
|
102
|
+
--secondary-foreground: var(--background);
|
|
103
|
+
--accent-foreground: var(--foreground);
|
|
104
|
+
|
|
105
|
+
--success-foreground: var(--background);
|
|
106
|
+
--warning-foreground: var(--foreground);
|
|
107
|
+
--destructive-foreground: var(--background);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* ===========================
|
|
111
|
+
DARK THEME (High Contrast Dark)
|
|
112
|
+
Background: Black
|
|
113
|
+
Foreground: White
|
|
114
|
+
=========================== */
|
|
115
|
+
:root.dark {
|
|
116
|
+
--theme-icon: 'Moon';
|
|
117
|
+
--theme-label: 'Dark';
|
|
118
|
+
--theme-is-dark: 1;
|
|
119
|
+
|
|
120
|
+
/* ===========================
|
|
121
|
+
1. USER SETS - 5 BRAND COLORS
|
|
122
|
+
=========================== */
|
|
123
|
+
--foreground: #ffffff;
|
|
124
|
+
--background: #000000;
|
|
125
|
+
--primary: #00bcd4; /* Cyan */
|
|
126
|
+
--secondary: #10b981; /* Green */
|
|
127
|
+
--accent: #ff9800; /* Orange */
|
|
128
|
+
|
|
129
|
+
/* ===========================
|
|
130
|
+
2. FRAMEWORK DEFAULTS - STATUS COLORS
|
|
131
|
+
=========================== */
|
|
132
|
+
--success: #10b981;
|
|
133
|
+
--warning: #f59e0b;
|
|
134
|
+
--destructive: #ef4444;
|
|
135
|
+
|
|
136
|
+
/* ===========================
|
|
137
|
+
3. AUTO-COMPUTED - SURFACES
|
|
138
|
+
=========================== */
|
|
139
|
+
--muted: color-mix(in oklab, var(--foreground) 10%, var(--background));
|
|
140
|
+
--muted-foreground: color-mix(in oklab, var(--foreground) 75%, transparent);
|
|
141
|
+
--border: color-mix(in oklab, var(--foreground) 15%, var(--background));
|
|
142
|
+
--input: var(--muted);
|
|
143
|
+
--ring: var(--primary);
|
|
144
|
+
|
|
145
|
+
--card: var(--background);
|
|
146
|
+
--card-foreground: var(--foreground);
|
|
147
|
+
--popover: var(--card);
|
|
148
|
+
--popover-foreground: var(--card-foreground);
|
|
149
|
+
--surface-1: var(--card);
|
|
150
|
+
|
|
151
|
+
/* ===========================
|
|
152
|
+
4. AUTO-COMPUTED - TEXT ON BRAND COLORS
|
|
153
|
+
=========================== */
|
|
154
|
+
--primary-foreground: var(--background);
|
|
155
|
+
--secondary-foreground: var(--foreground);
|
|
156
|
+
--accent-foreground: var(--background);
|
|
157
|
+
|
|
158
|
+
--success-foreground: var(--foreground);
|
|
159
|
+
--warning-foreground: var(--background);
|
|
160
|
+
--destructive-foreground: var(--foreground);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* ===========================
|
|
164
|
+
CUSTOM THEMES
|
|
165
|
+
=========================== */
|
|
166
|
+
|
|
167
|
+
/* Add your custom themes here */
|
|
168
|
+
/* Example:
|
|
169
|
+
.brand {
|
|
170
|
+
--theme-icon: 'Zap';
|
|
171
|
+
--theme-label: 'Brand';
|
|
172
|
+
--background: #your-brand-background;
|
|
173
|
+
--foreground: #your-brand-foreground;
|
|
174
|
+
--primary: #your-brand-primary;
|
|
175
|
+
--secondary: #your-brand-secondary;
|
|
176
|
+
--accent: #your-brand-accent;
|
|
177
|
+
... other variables ...
|
|
178
|
+
}
|
|
179
|
+
*/
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// apps/demo/vite.config.ts
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
|
+
import { defineConfig } from 'vite';
|
|
4
|
+
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
5
|
+
import autoprefixer from 'autoprefixer';
|
|
6
|
+
// @ts-expect-error - postcss-import doesn't have type definitions
|
|
7
|
+
import postcssImport from 'postcss-import';
|
|
8
|
+
import postcssNesting from 'postcss-nesting';
|
|
9
|
+
import { resolve as pathResolve } from 'node:path';
|
|
10
|
+
import { createRequire } from 'node:module';
|
|
11
|
+
|
|
12
|
+
const require = createRequire(import.meta.url);
|
|
13
|
+
|
|
14
|
+
export default defineConfig({
|
|
15
|
+
plugins: [
|
|
16
|
+
react({
|
|
17
|
+
jsxRuntime: 'automatic',
|
|
18
|
+
}),
|
|
19
|
+
tsconfigPaths({
|
|
20
|
+
ignoreConfigErrors: true,
|
|
21
|
+
}),
|
|
22
|
+
],
|
|
23
|
+
css: {
|
|
24
|
+
postcss: {
|
|
25
|
+
plugins: [
|
|
26
|
+
postcssImport({
|
|
27
|
+
resolve: (id: string, basedir: string) => {
|
|
28
|
+
// Handle package imports like '@donotdev/components/styles'
|
|
29
|
+
if (!id.startsWith('.')) {
|
|
30
|
+
try {
|
|
31
|
+
return require.resolve(id, { paths: [basedir] });
|
|
32
|
+
} catch {
|
|
33
|
+
// Fallback to relative resolution
|
|
34
|
+
return pathResolve(basedir, id);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Relative imports
|
|
38
|
+
return pathResolve(basedir, id);
|
|
39
|
+
},
|
|
40
|
+
}),
|
|
41
|
+
postcssNesting,
|
|
42
|
+
autoprefixer,
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
optimizeDeps: {
|
|
47
|
+
include: ['react', 'react-dom', 'react/jsx-runtime'],
|
|
48
|
+
},
|
|
49
|
+
resolve: {
|
|
50
|
+
dedupe: ['react', 'react-dom'],
|
|
51
|
+
preserveSymlinks: false,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Next.js Environment Variables (NEXT_PUBLIC_ prefix required for client-side)
|
|
2
|
+
#
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# ENVIRONMENT FILE STRUCTURE
|
|
5
|
+
# =============================================================================
|
|
6
|
+
# Next.js loads .env files in this priority order (higher overrides lower):
|
|
7
|
+
# 1. .env.production.local (highest priority, gitignored, production only)
|
|
8
|
+
# 2. .env.production (mode-specific, production only)
|
|
9
|
+
# 3. .env.local (always loaded, gitignored, local overrides)
|
|
10
|
+
# 4. .env (base file, lowest priority, committed to git)
|
|
11
|
+
#
|
|
12
|
+
# RECOMMENDED SETUP:
|
|
13
|
+
# - .env (this file) → Base/default values (committed to git)
|
|
14
|
+
# - .env.local → Local development overrides (gitignored)
|
|
15
|
+
# - .env.production.local → Production overrides (gitignored)
|
|
16
|
+
#
|
|
17
|
+
# Copy this file to .env and update with your values
|
|
18
|
+
# For local dev: copy to .env.local and override as needed
|
|
19
|
+
# For production: copy to .env.production.local with production values
|
|
20
|
+
|
|
21
|
+
# =============================================================================
|
|
22
|
+
# App Configuration
|
|
23
|
+
# =============================================================================
|
|
24
|
+
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
25
|
+
|
|
26
|
+
# =============================================================================
|
|
27
|
+
# DoNotDev License Key
|
|
28
|
+
# =============================================================================
|
|
29
|
+
# Get your license key from: https://donotdev.com/pricing
|
|
30
|
+
# Removes watermark and enables all features
|
|
31
|
+
# Can be the same key as in root .env if sharing across apps
|
|
32
|
+
NEXT_PUBLIC_DONOTDEV_LICENSE_KEY=dndev_your_key_here
|
|
33
|
+
|
|
34
|
+
# =============================================================================
|
|
35
|
+
# Authentication & OAuth Providers
|
|
36
|
+
# =============================================================================
|
|
37
|
+
# Comma-separated list of enabled auth providers
|
|
38
|
+
# Available: github (required for framework), google, facebook, discord, twitter, microsoft, spotify, linkedin, reddit, twitch, yahoo, apple
|
|
39
|
+
# Uncomment when Firebase is configured (requires NEXT_PUBLIC_FIREBASE_API_KEY and NEXT_PUBLIC_FIREBASE_PROJECT_ID)
|
|
40
|
+
# NEXT_PUBLIC_AUTH_PARTNERS=google,github
|
|
41
|
+
|
|
42
|
+
# Comma-separated list of enabled OAuth partners for API access
|
|
43
|
+
# Available: google, github, facebook, discord, twitter, microsoft, spotify, linkedin, reddit, twitch, yahoo, apple
|
|
44
|
+
# NEXT_PUBLIC_OAUTH_PARTNERS=google,spotify
|
|
45
|
+
|
|
46
|
+
# Individual OAuth client IDs (only needed for OAuth partners)
|
|
47
|
+
# NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id
|
|
48
|
+
# NEXT_PUBLIC_GITHUB_CLIENT_ID=your_github_client_id
|
|
49
|
+
# NEXT_PUBLIC_SPOTIFY_CLIENT_ID=your_spotify_client_id
|
|
50
|
+
|
|
51
|
+
# =============================================================================
|
|
52
|
+
# Firebase Configuration
|
|
53
|
+
# =============================================================================
|
|
54
|
+
# Get these values from your Firebase project settings
|
|
55
|
+
NEXT_PUBLIC_FIREBASE_API_KEY=
|
|
56
|
+
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
|
|
57
|
+
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
|
|
58
|
+
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
|
|
59
|
+
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
|
|
60
|
+
NEXT_PUBLIC_FIREBASE_APP_ID=
|
|
61
|
+
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=
|
|
62
|
+
NEXT_PUBLIC_FIREBASE_FUNCTIONS_REGION=
|
|
63
|
+
|
|
64
|
+
# =============================================================================
|
|
65
|
+
# Firebase Emulator (Development only)
|
|
66
|
+
# =============================================================================
|
|
67
|
+
# Set to true to use Firebase emulators instead of production services
|
|
68
|
+
NEXT_PUBLIC_USE_FIREBASE_EMULATOR=false
|
|
69
|
+
NEXT_PUBLIC_FIREBASE_EMULATOR_HOST=localhost
|
|
70
|
+
NEXT_PUBLIC_FIREBASE_EMULATOR_PORT=9099
|
|
71
|
+
NEXT_PUBLIC_FIREBASE_AUTH_EMULATOR_HOST=http://localhost:9099
|
|
72
|
+
NEXT_PUBLIC_FIREBASE_FIRESTORE_EMULATOR_HOST=localhost:8080
|
|
73
|
+
NEXT_PUBLIC_FIREBASE_FUNCTIONS_EMULATOR_PORT=5001
|
|
74
|
+
|
|
75
|
+
# =============================================================================
|
|
76
|
+
# Firebase App Check (Abuse Protection)
|
|
77
|
+
# =============================================================================
|
|
78
|
+
# reCAPTCHA v3 site key for App Check
|
|
79
|
+
# NEXT_PUBLIC_RECAPTCHA_SITE_KEY=6LcXXXX...
|
|
80
|
+
# Optional: Debug token for localhost testing
|
|
81
|
+
# NEXT_PUBLIC_APPCHECK_DEBUG_TOKEN=XXXX-XXXX-XXXX
|
|
82
|
+
|
|
83
|
+
# =============================================================================
|
|
84
|
+
# Stripe Configuration (if using billing)
|
|
85
|
+
# =============================================================================
|
|
86
|
+
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
|
|
87
|
+
|
|
88
|
+
# =============================================================================
|
|
89
|
+
# Sentry (optional - auto-enabled if SENTRY_DSN is set)
|
|
90
|
+
# =============================================================================
|
|
91
|
+
# Framework automatically initializes Sentry if this variable is set
|
|
92
|
+
NEXT_PUBLIC_SENTRY_DSN=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostCSS config for Next.js
|
|
3
|
+
* Uses custom resolver for workspace package resolution (matches framework pattern)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import postcssImport from 'postcss-import';
|
|
7
|
+
import postcssNesting from 'postcss-nesting';
|
|
8
|
+
import autoprefixer from 'autoprefixer';
|
|
9
|
+
import { createRequire } from 'node:module';
|
|
10
|
+
import { resolve, join, dirname } from 'node:path';
|
|
11
|
+
import { existsSync } from 'node:fs';
|
|
12
|
+
|
|
13
|
+
const findPackageRoot = (startDir) => {
|
|
14
|
+
let current = resolve(startDir);
|
|
15
|
+
const root = resolve('/');
|
|
16
|
+
|
|
17
|
+
while (current !== root) {
|
|
18
|
+
const pkgPath = join(current, 'package.json');
|
|
19
|
+
if (existsSync(pkgPath)) {
|
|
20
|
+
return current;
|
|
21
|
+
}
|
|
22
|
+
const parent = dirname(current);
|
|
23
|
+
if (parent === current) break;
|
|
24
|
+
current = parent;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return startDir;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const customResolve = (id, basedir) => {
|
|
31
|
+
try {
|
|
32
|
+
const packageRoot = findPackageRoot(basedir);
|
|
33
|
+
const require = createRequire(join(packageRoot, 'package.json'));
|
|
34
|
+
return require.resolve(id);
|
|
35
|
+
} catch (error) {
|
|
36
|
+
return resolve(basedir, id);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** @type {import('postcss-load-config').Config} */
|
|
41
|
+
const config = {
|
|
42
|
+
plugins: [
|
|
43
|
+
postcssImport({ resolve: customResolve }),
|
|
44
|
+
postcssNesting,
|
|
45
|
+
autoprefixer({
|
|
46
|
+
overrideBrowserslist: [
|
|
47
|
+
'> 1%',
|
|
48
|
+
'last 2 versions',
|
|
49
|
+
'Firefox ESR',
|
|
50
|
+
'not dead',
|
|
51
|
+
'not op_mini all',
|
|
52
|
+
],
|
|
53
|
+
grid: 'autoplace',
|
|
54
|
+
}),
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default config;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
// src/app/ClientLayout.tsx
|
|
3
|
+
|
|
4
|
+
import { NextJsAppProviders } from '@donotdev/ui/next';
|
|
5
|
+
import { appConfig } from '../config/app';
|
|
6
|
+
|
|
7
|
+
interface ClientLayoutProps {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
serverCookies?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Client-side layout wrapper for Next.js App Router
|
|
14
|
+
*
|
|
15
|
+
* Configuration-driven architecture with smart defaults.
|
|
16
|
+
* Layout preset comes from appConfig.preset (configured in config/app.ts).
|
|
17
|
+
* Layout prop is for breadcrumbs and slot customizations only.
|
|
18
|
+
* CSS variable overrides should be done in themes.css.
|
|
19
|
+
* Override only what you need - everything else has sensible defaults.
|
|
20
|
+
*/
|
|
21
|
+
export function ClientLayout({ children, serverCookies }: ClientLayoutProps) {
|
|
22
|
+
return (
|
|
23
|
+
<div id="root">
|
|
24
|
+
<NextJsAppProviders
|
|
25
|
+
config={appConfig}
|
|
26
|
+
serverCookies={serverCookies}
|
|
27
|
+
layout={{
|
|
28
|
+
breadcrumbs: 'smart', // 'smart' | 'always' | 'never' | false
|
|
29
|
+
header: {
|
|
30
|
+
// end: () => <YourHeaderActions />,
|
|
31
|
+
},
|
|
32
|
+
// footer: () => <CustomFooter />,
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
{children}
|
|
36
|
+
</NextJsAppProviders>
|
|
37
|
+
</div>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Metadata } from 'next';
|
|
2
|
+
import { cookies } from 'next/headers';
|
|
3
|
+
import '../globals.css';
|
|
4
|
+
import { ClientLayout } from './ClientLayout';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Framework fonts are loaded via CSS @font-face rules in dndev.css
|
|
8
|
+
*
|
|
9
|
+
* The framework CSS includes optimized @font-face declarations for Roboto
|
|
10
|
+
* with proper unicode-range subsetting for performance.
|
|
11
|
+
* Fonts are copied from framework to public/fonts/ by AssetDiscovery during build.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export const metadata: Metadata = {
|
|
15
|
+
title: 'DoNotDev Demo',
|
|
16
|
+
description: 'Next.js site using DNDev framework',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default async function RootLayout({
|
|
20
|
+
children,
|
|
21
|
+
}: {
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
}) {
|
|
24
|
+
/**
|
|
25
|
+
* SSR: Read theme from cookies to apply correct theme class to HTML
|
|
26
|
+
*
|
|
27
|
+
* This ensures the server-rendered HTML has the correct theme class,
|
|
28
|
+
* preventing FOUC (Flash of Unstyled Content) when client hydrates.
|
|
29
|
+
*
|
|
30
|
+
* Flow:
|
|
31
|
+
* 1. Server reads cookie → applies theme class to <html>/<body>
|
|
32
|
+
* 2. NextJsStoresInitializer hydrates store from cookie
|
|
33
|
+
* 3. Client hydrates → Zustand persist matches server state
|
|
34
|
+
* 4. setAvailableThemes() ensures DOM matches persisted theme
|
|
35
|
+
*/
|
|
36
|
+
const cookieStore = await cookies();
|
|
37
|
+
const themeCookie = cookieStore.get('dndev-theme');
|
|
38
|
+
const themeClass = themeCookie?.value || 'light';
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<html lang="en" className={`dndev-design-tokens ${themeClass}`}>
|
|
42
|
+
<head>
|
|
43
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
44
|
+
</head>
|
|
45
|
+
<body className={themeClass}>
|
|
46
|
+
<ClientLayout serverCookies={cookieStore.toString()}>
|
|
47
|
+
{children}
|
|
48
|
+
</ClientLayout>
|
|
49
|
+
</body>
|
|
50
|
+
</html>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Not found page for Next.js App Router
|
|
3
|
+
* @description 404 error page using framework's NotFoundPage component
|
|
4
|
+
* Next.js automatically uses this file for unmatched routes
|
|
5
|
+
* @version 0.0.1
|
|
6
|
+
* @since 0.0.1
|
|
7
|
+
* @author AMBROISE PARK Consulting
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { NotFoundPage } from '@donotdev/ui';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Next.js App Router automatically uses not-found.tsx for 404 errors
|
|
14
|
+
* This file exports the framework's NotFoundPage component which provides:
|
|
15
|
+
* - Professional full-viewport centered design
|
|
16
|
+
* - i18n translation support
|
|
17
|
+
* - Dynamic route suggestions
|
|
18
|
+
* - Accessible navigation buttons
|
|
19
|
+
*/
|
|
20
|
+
export default NotFoundPage;
|
|
21
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Application configuration
|
|
3
|
+
* @description Defines application metadata and feature flags
|
|
4
|
+
* @version 0.0.1
|
|
5
|
+
* @since 0.0.1
|
|
6
|
+
* @author AMBROISE PARK Consulting
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { AppConfig } from '@donotdev/core';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Application name constant
|
|
13
|
+
*
|
|
14
|
+
* @version 0.0.1
|
|
15
|
+
* @since 0.0.1
|
|
16
|
+
* @author AMBROISE PARK Consulting
|
|
17
|
+
*/
|
|
18
|
+
export const APP_NAME = '{{appName}}';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Application short name constant
|
|
22
|
+
*
|
|
23
|
+
* @version 0.0.1
|
|
24
|
+
* @since 0.0.1
|
|
25
|
+
* @author AMBROISE PARK Consulting
|
|
26
|
+
*/
|
|
27
|
+
export const APP_SHORT_NAME = '{{appShortName}}';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Application description constant
|
|
31
|
+
*
|
|
32
|
+
* @version 0.0.1
|
|
33
|
+
* @since 0.0.1
|
|
34
|
+
* @author AMBROISE PARK Consulting
|
|
35
|
+
*/
|
|
36
|
+
export const APP_DESCRIPTION = 'Built with DoNotDev Framework';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Application configuration object
|
|
40
|
+
*
|
|
41
|
+
* @version 0.0.1
|
|
42
|
+
* @since 0.0.1
|
|
43
|
+
* @author AMBROISE PARK Consulting
|
|
44
|
+
*/
|
|
45
|
+
export const appConfig: AppConfig = {
|
|
46
|
+
app: {
|
|
47
|
+
name: APP_NAME,
|
|
48
|
+
shortName: APP_SHORT_NAME,
|
|
49
|
+
description: APP_DESCRIPTION,
|
|
50
|
+
// Optional: Configure footer legal links
|
|
51
|
+
// Remove any links you don't need
|
|
52
|
+
footer: {
|
|
53
|
+
legalLinks: [
|
|
54
|
+
{ path: '#cookie-settings', label: 'footer.legal.cookieSettings' },
|
|
55
|
+
{ path: '/legal/privacy', label: 'footer.legal.privacyPolicy' },
|
|
56
|
+
{ path: '/legal/terms', label: 'footer.legal.termsOfService' },
|
|
57
|
+
// Add more links as needed:
|
|
58
|
+
// { path: '/legal/legal-notice', label: 'footer.legal.legalNotice' },
|
|
59
|
+
// { path: '/license', label: 'License' },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
preset: 'docs', // 'landing' | 'admin' | 'moolti' | 'docs' | 'blog' | 'game' | 'plain'
|
|
64
|
+
features: {
|
|
65
|
+
// Optional: Enable debug tools in development
|
|
66
|
+
// debug: true,
|
|
67
|
+
},
|
|
68
|
+
// Optional: Override auth routes
|
|
69
|
+
// auth: {
|
|
70
|
+
// authRoute: '/signin',
|
|
71
|
+
// roleRoute: '/403',
|
|
72
|
+
// tierRoute: '/pricing',
|
|
73
|
+
// },
|
|
74
|
+
};
|
|
75
|
+
|