@solidxai/solidctl 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -0
- package/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +17 -0
- package/dist/app.module.js.map +1 -0
- package/dist/commands/build.command.d.ts +2 -0
- package/dist/commands/build.command.js +139 -0
- package/dist/commands/build.command.js.map +1 -0
- package/dist/commands/create-app/create-app.command.d.ts +2 -0
- package/dist/commands/create-app/create-app.command.js +71 -0
- package/dist/commands/create-app/create-app.command.js.map +1 -0
- package/dist/commands/create-app/helpers.d.ts +59 -0
- package/dist/commands/create-app/helpers.js +219 -0
- package/dist/commands/create-app/helpers.js.map +1 -0
- package/dist/commands/create-app/setup-questions.d.ts +31 -0
- package/dist/commands/create-app/setup-questions.js +70 -0
- package/dist/commands/create-app/setup-questions.js.map +1 -0
- package/dist/commands/info.command.d.ts +2 -0
- package/dist/commands/info.command.js +40 -0
- package/dist/commands/info.command.js.map +1 -0
- package/dist/commands/local-upgrade.command.d.ts +2 -0
- package/dist/commands/local-upgrade.command.js +94 -0
- package/dist/commands/local-upgrade.command.js.map +1 -0
- package/dist/commands/release.command.d.ts +2 -0
- package/dist/commands/release.command.js +181 -0
- package/dist/commands/release.command.js.map +1 -0
- package/dist/commands/seed.command.d.ts +2 -0
- package/dist/commands/seed.command.js +40 -0
- package/dist/commands/seed.command.js.map +1 -0
- package/dist/commands/test-data.command.d.ts +2 -0
- package/dist/commands/test-data.command.js +38 -0
- package/dist/commands/test-data.command.js.map +1 -0
- package/dist/commands/upgrade.command.d.ts +2 -0
- package/dist/commands/upgrade.command.js +48 -0
- package/dist/commands/upgrade.command.js.map +1 -0
- package/dist/helper.d.ts +1 -0
- package/dist/helper.js +19 -0
- package/dist/helper.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +34 -0
- package/dist/main.js.map +1 -0
- package/dist/shims/solid-shim.js +23 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +99 -0
- package/templates/dot-templates/dot.vscode.template/launch.json +35 -0
- package/templates/nest-template/README.md +73 -0
- package/templates/nest-template/bin/solid +2 -0
- package/templates/nest-template/dot-templates/dot.dockerignore.template +1 -0
- package/templates/nest-template/dot-templates/dot.eslintrc.template.js +25 -0
- package/templates/nest-template/dot-templates/dot.gitignore.template +56 -0
- package/templates/nest-template/dot-templates/dot.prettierrc.template +4 -0
- package/templates/nest-template/nest-cli.json +8 -0
- package/templates/nest-template/nodemon.json +13 -0
- package/templates/nest-template/package.json +132 -0
- package/templates/nest-template/src/app-default-database.module.ts +75 -0
- package/templates/nest-template/src/app.controller.spec.ts +22 -0
- package/templates/nest-template/src/app.module.ts +51 -0
- package/templates/nest-template/src/app.service.ts +32 -0
- package/templates/nest-template/src/database.utils.ts +18 -0
- package/templates/nest-template/src/main-cli.ts +81 -0
- package/templates/nest-template/src/main.ts +116 -0
- package/templates/nest-template/test/app.e2e-spec.ts +24 -0
- package/templates/nest-template/test/jest-e2e.json +9 -0
- package/templates/nest-template/tsconfig.build.json +4 -0
- package/templates/nest-template/tsconfig.json +22 -0
- package/templates/next-template/README.md +36 -0
- package/templates/next-template/app/GlobalProvider.tsx +23 -0
- package/templates/next-template/app/admin/core/[moduleName]/[modelName]/form/[id]/page.tsx +19 -0
- package/templates/next-template/app/admin/core/[moduleName]/[modelName]/kanban/page.tsx +18 -0
- package/templates/next-template/app/admin/core/[moduleName]/[modelName]/list/page.tsx +18 -0
- package/templates/next-template/app/admin/core/[moduleName]/home/page.tsx +15 -0
- package/templates/next-template/app/admin/core/[moduleName]/settings/[settings]/page.tsx +11 -0
- package/templates/next-template/app/admin/layout.tsx +11 -0
- package/templates/next-template/app/admin/loading.tsx +8 -0
- package/templates/next-template/app/admin/page.tsx +10 -0
- package/templates/next-template/app/api/auth/[...nextauth]/route.ts +6 -0
- package/templates/next-template/app/auth/confirm-forgot-password/page.tsx +12 -0
- package/templates/next-template/app/auth/forgot-password/page.tsx +11 -0
- package/templates/next-template/app/auth/initiate-forgot-password/page.tsx +11 -0
- package/templates/next-template/app/auth/initiate-forgot-password-thank-you/page.tsx +11 -0
- package/templates/next-template/app/auth/initiate-google-oauth/page.tsx +9 -0
- package/templates/next-template/app/auth/initiate-login/page.tsx +13 -0
- package/templates/next-template/app/auth/initiate-register/page.tsx +14 -0
- package/templates/next-template/app/auth/layout.tsx +10 -0
- package/templates/next-template/app/auth/login/page.tsx +12 -0
- package/templates/next-template/app/auth/otp-verify/page.tsx +12 -0
- package/templates/next-template/app/auth/register/page.tsx +12 -0
- package/templates/next-template/app/auth/reset-password/page.tsx +13 -0
- package/templates/next-template/app/auth/sso/page.tsx +80 -0
- package/templates/next-template/app/layout.tsx +56 -0
- package/templates/next-template/app/solid-extensions.ts +8 -0
- package/templates/next-template/dot-templates/dot.gitignore.template +44 -0
- package/templates/next-template/eslint.config.mjs +16 -0
- package/templates/next-template/middleware.ts +23 -0
- package/templates/next-template/next-env.d.ts +5 -0
- package/templates/next-template/next-solidx-run.js +18 -0
- package/templates/next-template/next.config.js +47 -0
- package/templates/next-template/package.json +79 -0
- package/templates/next-template/public/favicon.ico +0 -0
- package/templates/next-template/public/file.svg +1 -0
- package/templates/next-template/public/globe.svg +1 -0
- package/templates/next-template/public/next.svg +1 -0
- package/templates/next-template/public/themes/solid-dark-purple/theme.css +6203 -0
- package/templates/next-template/public/themes/solid-light-purple/solid-login-light.png +0 -0
- package/templates/next-template/public/themes/solid-light-purple/theme.css +6256 -0
- package/templates/next-template/public/vercel.svg +1 -0
- package/templates/next-template/public/window.svg +1 -0
- package/templates/next-template/redux/store.ts +52 -0
- package/templates/next-template/tsconfig.json +33 -0
- package/templates/next-template/types/index.d.ts +7 -0
- package/templates/next-template/types/layout.d.ts +94 -0
- package/templates/next-template/types/next.d.ts +46 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { Logger } from "@nestjs/common";
|
|
4
|
+
import { existsSync } from "fs";
|
|
5
|
+
import { CommandFactory } from "nest-commander";
|
|
6
|
+
import { resolve } from "path";
|
|
7
|
+
import { AppModule } from "./app.module";
|
|
8
|
+
import { configurePgInt8TypeParser } from "./database.utils";
|
|
9
|
+
|
|
10
|
+
const logger = new Logger("Bootstrap");
|
|
11
|
+
|
|
12
|
+
// Suppress punycode deprecation warning from dependencies
|
|
13
|
+
process.removeAllListeners('warning');
|
|
14
|
+
process.on('warning', (warning) => {
|
|
15
|
+
if (warning.name === 'DeprecationWarning' && warning.message.includes('punycode')) {
|
|
16
|
+
return; // Ignore known punycode deprecation from dependencies
|
|
17
|
+
}
|
|
18
|
+
console.warn(warning); // Still show other warnings
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// ---- Global safety nets (must be first) ----
|
|
22
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
23
|
+
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
24
|
+
});
|
|
25
|
+
process.on('uncaughtException', (err) => {
|
|
26
|
+
console.error('Uncaught Exception:', err);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
async function bootstrap() {
|
|
30
|
+
// setup log levels...
|
|
31
|
+
const showLogs = process.argv.includes('--verbose') || process.argv.includes('-v');
|
|
32
|
+
// strip before nest-commander runs...
|
|
33
|
+
stripArg('--verbose');
|
|
34
|
+
stripArg('-v');
|
|
35
|
+
|
|
36
|
+
// validate project existence
|
|
37
|
+
validateProjectRootPath();
|
|
38
|
+
|
|
39
|
+
// Define log levels based on the flag
|
|
40
|
+
const logLevels = showLogs ? ['debug', 'error', 'fatal', 'log', 'verbose', 'warn'] : ['error', 'fatal'];
|
|
41
|
+
|
|
42
|
+
const appModule = await AppModule.forRoot();
|
|
43
|
+
// const app = await NestFactory.create(appModule);
|
|
44
|
+
|
|
45
|
+
// Create an instance of the application, capture the application context so we can inject it into a service in itself.
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
const app = await CommandFactory.createWithoutRunning(appModule, logLevels);
|
|
48
|
+
// const app = await CommandFactory.createWithoutRunning(AppModule, ['debug', 'error', 'fatal', 'log', 'verbose', 'warn']);
|
|
49
|
+
// const app = await CommandFactory.createWithoutRunning(AppModule, ['error', 'fatal']);
|
|
50
|
+
|
|
51
|
+
// Configure pg type parser before running the app
|
|
52
|
+
configurePgInt8TypeParser();
|
|
53
|
+
|
|
54
|
+
// Now run the command factory.
|
|
55
|
+
try {
|
|
56
|
+
await CommandFactory.runApplication(app);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Exit explicitly, make sure that any commands you have created and are using Promises, you do not keep them orphan/dangling.
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
bootstrap();
|
|
67
|
+
|
|
68
|
+
// Check if the current directory is a valid Solid API project
|
|
69
|
+
function validateProjectRootPath() {
|
|
70
|
+
const packageJsonPath = resolve(process.cwd(), "package.json");
|
|
71
|
+
if (!existsSync(packageJsonPath)) {
|
|
72
|
+
logger.log("Does not seem to be a valid solid-api project.");
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Utility function to strip a specific argument from process.argv
|
|
78
|
+
function stripArg(flag: string) {
|
|
79
|
+
const idx = process.argv.indexOf(flag);
|
|
80
|
+
if (idx !== -1) process.argv.splice(idx, 1);
|
|
81
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// import { NestFactory } from '@nestjs/core';
|
|
2
|
+
// import { AppModule } from './app.module';
|
|
3
|
+
|
|
4
|
+
// async function bootstrap() {
|
|
5
|
+
// const app = await NestFactory.create(AppModule);
|
|
6
|
+
// await app.listen(3000);
|
|
7
|
+
// }
|
|
8
|
+
// bootstrap();
|
|
9
|
+
import { ValidationPipe } from '@nestjs/common';
|
|
10
|
+
import { NestFactory } from '@nestjs/core';
|
|
11
|
+
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
|
|
12
|
+
import { buildDefaultCorsOptions, buildDefaultSecurityHeaderOptions, buildPermissionsPolicyHeader, WrapResponseInterceptor } from '@solidxai/core';
|
|
13
|
+
import { NextFunction, Request, Response } from 'express';
|
|
14
|
+
import helmet from 'helmet';
|
|
15
|
+
import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston';
|
|
16
|
+
import { AppModule } from './app.module';
|
|
17
|
+
import { configurePgInt8TypeParser } from './database.utils';
|
|
18
|
+
|
|
19
|
+
import qs from 'qs';
|
|
20
|
+
|
|
21
|
+
// ---- Global safety nets (must be first) ----
|
|
22
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
23
|
+
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
24
|
+
});
|
|
25
|
+
process.on('uncaughtException', (err) => {
|
|
26
|
+
console.error('Uncaught Exception:', err);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
async function bootstrap() {
|
|
30
|
+
const appModule = await AppModule.forRoot();
|
|
31
|
+
const app = await NestFactory.create(appModule);
|
|
32
|
+
|
|
33
|
+
// Enable Helmet middleware for security
|
|
34
|
+
app.use(helmet(buildDefaultSecurityHeaderOptions()));
|
|
35
|
+
|
|
36
|
+
// Enable Permission policy header
|
|
37
|
+
app.use((req: Request, _res: Response, next: NextFunction) => {
|
|
38
|
+
_res.setHeader('Permissions-Policy', buildPermissionsPolicyHeader({
|
|
39
|
+
// Example overrides:
|
|
40
|
+
// "autoplay": ['self', 'https://player.example.com'],
|
|
41
|
+
// "camera": 'none',
|
|
42
|
+
}));
|
|
43
|
+
next();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// setup winston as the default logger.
|
|
47
|
+
// const app = await NestFactory.create(AppModule);
|
|
48
|
+
app.useLogger(app.get(WINSTON_MODULE_NEST_PROVIDER));
|
|
49
|
+
|
|
50
|
+
// Making the port dynamic
|
|
51
|
+
const port = process.env.PORT || 3000;
|
|
52
|
+
|
|
53
|
+
app.setGlobalPrefix('api');
|
|
54
|
+
// Middleware to parse deeply nested queries
|
|
55
|
+
app.use((req: Request, _res: Response, next: NextFunction) => {
|
|
56
|
+
if (req.query) {
|
|
57
|
+
req.query = qs.parse(req.url.split('?')[1], {
|
|
58
|
+
allowDots: true, // Allows dot notation ($eq, $or, etc.)
|
|
59
|
+
depth: 10, // Supports deeply nested structures
|
|
60
|
+
arrayLimit: 100, // Prevents indexed arrays from becoming objects
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
next();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Apply the ValidationPipe globally in our main.ts file
|
|
67
|
+
app.useGlobalPipes(new ValidationPipe({
|
|
68
|
+
// This attribute makes that the system throws an error if a property non existent on our DTO is sent in the payload.
|
|
69
|
+
// forbidNonWhitelisted: true,
|
|
70
|
+
|
|
71
|
+
// This removes the un-necessary fields in the payload.
|
|
72
|
+
// whitelist: true,
|
|
73
|
+
|
|
74
|
+
// Converts the payload to an actual instance of the DTO type.
|
|
75
|
+
transform: true,
|
|
76
|
+
|
|
77
|
+
transformOptions: {
|
|
78
|
+
enableImplicitConversion: true,
|
|
79
|
+
}
|
|
80
|
+
}));
|
|
81
|
+
|
|
82
|
+
// Setting up Swagger document
|
|
83
|
+
const options = new DocumentBuilder()
|
|
84
|
+
.setTitle('Solid Starters')
|
|
85
|
+
.setDescription('Solid starters starter')
|
|
86
|
+
.setVersion('1.0')
|
|
87
|
+
.setExternalDoc('Postman Collection', '/docs-json')
|
|
88
|
+
.addBearerAuth(
|
|
89
|
+
{
|
|
90
|
+
// I was also testing it without prefix 'Bearer ' before the JWT
|
|
91
|
+
description: `Please enter token in following format: Bearer <JWT>`,
|
|
92
|
+
name: 'Authorization',
|
|
93
|
+
bearerFormat: 'Bearer', // I`ve tested not to use this field, but the result was the same
|
|
94
|
+
scheme: 'Bearer',
|
|
95
|
+
type: 'http', // I`ve attempted type: 'apiKey' too
|
|
96
|
+
in: 'Header'
|
|
97
|
+
},
|
|
98
|
+
'jwt'
|
|
99
|
+
)
|
|
100
|
+
.build();
|
|
101
|
+
|
|
102
|
+
const document = SwaggerModule.createDocument(app, options);
|
|
103
|
+
SwaggerModule.setup('/docs', app, document);
|
|
104
|
+
|
|
105
|
+
// Apply interceptor...
|
|
106
|
+
app.useGlobalInterceptors(
|
|
107
|
+
new WrapResponseInterceptor(),
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
app.enableCors(buildDefaultCorsOptions());
|
|
111
|
+
|
|
112
|
+
configurePgInt8TypeParser();
|
|
113
|
+
|
|
114
|
+
await app.listen(port);
|
|
115
|
+
}
|
|
116
|
+
bootstrap();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Test, TestingModule } from '@nestjs/testing';
|
|
2
|
+
import { INestApplication } from '@nestjs/common';
|
|
3
|
+
import * as request from 'supertest';
|
|
4
|
+
import { AppModule } from './../src/app.module';
|
|
5
|
+
|
|
6
|
+
describe('AppController (e2e)', () => {
|
|
7
|
+
let app: INestApplication;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
const moduleFixture: TestingModule = await Test.createTestingModule({
|
|
11
|
+
imports: [AppModule],
|
|
12
|
+
}).compile();
|
|
13
|
+
|
|
14
|
+
app = moduleFixture.createNestApplication();
|
|
15
|
+
await app.init();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('/ (GET)', () => {
|
|
19
|
+
return request(app.getHttpServer())
|
|
20
|
+
.get('/')
|
|
21
|
+
.expect(200)
|
|
22
|
+
.expect('Hello World!');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"removeComments": true,
|
|
6
|
+
"emitDecoratorMetadata": true,
|
|
7
|
+
"experimentalDecorators": true,
|
|
8
|
+
"allowSyntheticDefaultImports": true,
|
|
9
|
+
"target": "ES2021",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"outDir": "./dist",
|
|
12
|
+
"baseUrl": "./",
|
|
13
|
+
"incremental": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"strictNullChecks": false,
|
|
16
|
+
"noImplicitAny": false,
|
|
17
|
+
"strictBindCallApply": false,
|
|
18
|
+
"forceConsistentCasingInFileNames": false,
|
|
19
|
+
"noFallthroughCasesInSwitch": false,
|
|
20
|
+
"esModuleInterop": true,
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
|
2
|
+
|
|
3
|
+
## Getting Started
|
|
4
|
+
|
|
5
|
+
First, run the development server:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm run dev
|
|
9
|
+
# or
|
|
10
|
+
yarn dev
|
|
11
|
+
# or
|
|
12
|
+
pnpm dev
|
|
13
|
+
# or
|
|
14
|
+
bun dev
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
18
|
+
|
|
19
|
+
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
|
20
|
+
|
|
21
|
+
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
|
22
|
+
|
|
23
|
+
## Learn More
|
|
24
|
+
|
|
25
|
+
To learn more about Next.js, take a look at the following resources:
|
|
26
|
+
|
|
27
|
+
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
|
28
|
+
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
|
29
|
+
|
|
30
|
+
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
|
31
|
+
|
|
32
|
+
## Deploy on Vercel
|
|
33
|
+
|
|
34
|
+
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
|
35
|
+
|
|
36
|
+
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { SessionProvider } from "next-auth/react";
|
|
4
|
+
import { Toaster } from "react-hot-toast";
|
|
5
|
+
import { Provider } from "react-redux";
|
|
6
|
+
import { initializeStore } from "@/redux/store";
|
|
7
|
+
|
|
8
|
+
// Load all overrides.
|
|
9
|
+
// TODO: Putting this here as this seems to the most top level component used with "use client"
|
|
10
|
+
import "./solid-extensions";
|
|
11
|
+
|
|
12
|
+
export function GlobalProvider({ children, entities }: { children: React.ReactNode, entities: string[] }) {
|
|
13
|
+
const store = initializeStore(entities);
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<>
|
|
17
|
+
<Toaster />
|
|
18
|
+
<Provider store={store}>
|
|
19
|
+
<SessionProvider>{children}</SessionProvider>
|
|
20
|
+
</Provider>
|
|
21
|
+
</>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import { SolidFormLayouts } from "@solidxai/core-ui";
|
|
3
|
+
|
|
4
|
+
type SolidViewParams = {
|
|
5
|
+
params: {
|
|
6
|
+
moduleName: string;
|
|
7
|
+
modelName: string;
|
|
8
|
+
id: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const page = ({ params }: SolidViewParams) => {
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<SolidFormLayouts params={params} />
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default page;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import { SolidKanbanView } from "@solidxai/core-ui";
|
|
3
|
+
import { camelCase } from "change-case";
|
|
4
|
+
|
|
5
|
+
type SolidViewParams = {
|
|
6
|
+
params: {
|
|
7
|
+
moduleName: string;
|
|
8
|
+
modelName: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const page = ({ params }: SolidViewParams) => {
|
|
13
|
+
return (
|
|
14
|
+
<SolidKanbanView {...params} embeded={false} modelName={camelCase(params.modelName)} />
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default page;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import { SolidListView } from "@solidxai/core-ui";
|
|
3
|
+
import { camelCase } from "change-case";
|
|
4
|
+
|
|
5
|
+
type SolidViewParams = {
|
|
6
|
+
params: {
|
|
7
|
+
moduleName: string;
|
|
8
|
+
modelName: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const page = ({ params }: SolidViewParams) => {
|
|
13
|
+
return (
|
|
14
|
+
<SolidListView {...params} embeded={false} modelName={camelCase(params.modelName)} />
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default page;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SolidModuleHome } from '@solidxai/core-ui';
|
|
2
|
+
import { capitalCase } from 'change-case';
|
|
3
|
+
|
|
4
|
+
type SolidViewParams = {
|
|
5
|
+
params : {
|
|
6
|
+
moduleName : string
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export default function ModuleHome({params}: SolidViewParams) {
|
|
10
|
+
return (
|
|
11
|
+
<div>
|
|
12
|
+
<SolidModuleHome moduleName={capitalCase(params.moduleName)} />
|
|
13
|
+
</div>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import { SolidInitialLoginOtp } from "@solidxai/core-ui";
|
|
3
|
+
import { useSearchParams } from "next/navigation";
|
|
4
|
+
|
|
5
|
+
const InitiateLoginConfirm = () => {
|
|
6
|
+
return (
|
|
7
|
+
<div>
|
|
8
|
+
<SolidInitialLoginOtp />
|
|
9
|
+
</div>
|
|
10
|
+
);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default InitiateLoginConfirm;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
import { SolidInitiateRegisterOtp } from "@solidxai/core-ui";
|
|
3
|
+
|
|
4
|
+
import { useSearchParams } from "next/navigation";
|
|
5
|
+
|
|
6
|
+
const InitiateRegisterConfirm = () => {
|
|
7
|
+
return (
|
|
8
|
+
<div>
|
|
9
|
+
<SolidInitiateRegisterOtp />
|
|
10
|
+
</div>
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default InitiateRegisterConfirm;
|