@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.
Files changed (111) hide show
  1. package/README.md +98 -0
  2. package/dist/app.module.d.ts +2 -0
  3. package/dist/app.module.js +17 -0
  4. package/dist/app.module.js.map +1 -0
  5. package/dist/commands/build.command.d.ts +2 -0
  6. package/dist/commands/build.command.js +139 -0
  7. package/dist/commands/build.command.js.map +1 -0
  8. package/dist/commands/create-app/create-app.command.d.ts +2 -0
  9. package/dist/commands/create-app/create-app.command.js +71 -0
  10. package/dist/commands/create-app/create-app.command.js.map +1 -0
  11. package/dist/commands/create-app/helpers.d.ts +59 -0
  12. package/dist/commands/create-app/helpers.js +219 -0
  13. package/dist/commands/create-app/helpers.js.map +1 -0
  14. package/dist/commands/create-app/setup-questions.d.ts +31 -0
  15. package/dist/commands/create-app/setup-questions.js +70 -0
  16. package/dist/commands/create-app/setup-questions.js.map +1 -0
  17. package/dist/commands/info.command.d.ts +2 -0
  18. package/dist/commands/info.command.js +40 -0
  19. package/dist/commands/info.command.js.map +1 -0
  20. package/dist/commands/local-upgrade.command.d.ts +2 -0
  21. package/dist/commands/local-upgrade.command.js +94 -0
  22. package/dist/commands/local-upgrade.command.js.map +1 -0
  23. package/dist/commands/release.command.d.ts +2 -0
  24. package/dist/commands/release.command.js +181 -0
  25. package/dist/commands/release.command.js.map +1 -0
  26. package/dist/commands/seed.command.d.ts +2 -0
  27. package/dist/commands/seed.command.js +40 -0
  28. package/dist/commands/seed.command.js.map +1 -0
  29. package/dist/commands/test-data.command.d.ts +2 -0
  30. package/dist/commands/test-data.command.js +38 -0
  31. package/dist/commands/test-data.command.js.map +1 -0
  32. package/dist/commands/upgrade.command.d.ts +2 -0
  33. package/dist/commands/upgrade.command.js +48 -0
  34. package/dist/commands/upgrade.command.js.map +1 -0
  35. package/dist/helper.d.ts +1 -0
  36. package/dist/helper.js +19 -0
  37. package/dist/helper.js.map +1 -0
  38. package/dist/main.d.ts +2 -0
  39. package/dist/main.js +34 -0
  40. package/dist/main.js.map +1 -0
  41. package/dist/shims/solid-shim.js +23 -0
  42. package/dist/tsconfig.build.tsbuildinfo +1 -0
  43. package/package.json +99 -0
  44. package/templates/dot-templates/dot.vscode.template/launch.json +35 -0
  45. package/templates/nest-template/README.md +73 -0
  46. package/templates/nest-template/bin/solid +2 -0
  47. package/templates/nest-template/dot-templates/dot.dockerignore.template +1 -0
  48. package/templates/nest-template/dot-templates/dot.eslintrc.template.js +25 -0
  49. package/templates/nest-template/dot-templates/dot.gitignore.template +56 -0
  50. package/templates/nest-template/dot-templates/dot.prettierrc.template +4 -0
  51. package/templates/nest-template/nest-cli.json +8 -0
  52. package/templates/nest-template/nodemon.json +13 -0
  53. package/templates/nest-template/package.json +132 -0
  54. package/templates/nest-template/src/app-default-database.module.ts +75 -0
  55. package/templates/nest-template/src/app.controller.spec.ts +22 -0
  56. package/templates/nest-template/src/app.module.ts +51 -0
  57. package/templates/nest-template/src/app.service.ts +32 -0
  58. package/templates/nest-template/src/database.utils.ts +18 -0
  59. package/templates/nest-template/src/main-cli.ts +81 -0
  60. package/templates/nest-template/src/main.ts +116 -0
  61. package/templates/nest-template/test/app.e2e-spec.ts +24 -0
  62. package/templates/nest-template/test/jest-e2e.json +9 -0
  63. package/templates/nest-template/tsconfig.build.json +4 -0
  64. package/templates/nest-template/tsconfig.json +22 -0
  65. package/templates/next-template/README.md +36 -0
  66. package/templates/next-template/app/GlobalProvider.tsx +23 -0
  67. package/templates/next-template/app/admin/core/[moduleName]/[modelName]/form/[id]/page.tsx +19 -0
  68. package/templates/next-template/app/admin/core/[moduleName]/[modelName]/kanban/page.tsx +18 -0
  69. package/templates/next-template/app/admin/core/[moduleName]/[modelName]/list/page.tsx +18 -0
  70. package/templates/next-template/app/admin/core/[moduleName]/home/page.tsx +15 -0
  71. package/templates/next-template/app/admin/core/[moduleName]/settings/[settings]/page.tsx +11 -0
  72. package/templates/next-template/app/admin/layout.tsx +11 -0
  73. package/templates/next-template/app/admin/loading.tsx +8 -0
  74. package/templates/next-template/app/admin/page.tsx +10 -0
  75. package/templates/next-template/app/api/auth/[...nextauth]/route.ts +6 -0
  76. package/templates/next-template/app/auth/confirm-forgot-password/page.tsx +12 -0
  77. package/templates/next-template/app/auth/forgot-password/page.tsx +11 -0
  78. package/templates/next-template/app/auth/initiate-forgot-password/page.tsx +11 -0
  79. package/templates/next-template/app/auth/initiate-forgot-password-thank-you/page.tsx +11 -0
  80. package/templates/next-template/app/auth/initiate-google-oauth/page.tsx +9 -0
  81. package/templates/next-template/app/auth/initiate-login/page.tsx +13 -0
  82. package/templates/next-template/app/auth/initiate-register/page.tsx +14 -0
  83. package/templates/next-template/app/auth/layout.tsx +10 -0
  84. package/templates/next-template/app/auth/login/page.tsx +12 -0
  85. package/templates/next-template/app/auth/otp-verify/page.tsx +12 -0
  86. package/templates/next-template/app/auth/register/page.tsx +12 -0
  87. package/templates/next-template/app/auth/reset-password/page.tsx +13 -0
  88. package/templates/next-template/app/auth/sso/page.tsx +80 -0
  89. package/templates/next-template/app/layout.tsx +56 -0
  90. package/templates/next-template/app/solid-extensions.ts +8 -0
  91. package/templates/next-template/dot-templates/dot.gitignore.template +44 -0
  92. package/templates/next-template/eslint.config.mjs +16 -0
  93. package/templates/next-template/middleware.ts +23 -0
  94. package/templates/next-template/next-env.d.ts +5 -0
  95. package/templates/next-template/next-solidx-run.js +18 -0
  96. package/templates/next-template/next.config.js +47 -0
  97. package/templates/next-template/package.json +79 -0
  98. package/templates/next-template/public/favicon.ico +0 -0
  99. package/templates/next-template/public/file.svg +1 -0
  100. package/templates/next-template/public/globe.svg +1 -0
  101. package/templates/next-template/public/next.svg +1 -0
  102. package/templates/next-template/public/themes/solid-dark-purple/theme.css +6203 -0
  103. package/templates/next-template/public/themes/solid-light-purple/solid-login-light.png +0 -0
  104. package/templates/next-template/public/themes/solid-light-purple/theme.css +6256 -0
  105. package/templates/next-template/public/vercel.svg +1 -0
  106. package/templates/next-template/public/window.svg +1 -0
  107. package/templates/next-template/redux/store.ts +52 -0
  108. package/templates/next-template/tsconfig.json +33 -0
  109. package/templates/next-template/types/index.d.ts +7 -0
  110. package/templates/next-template/types/layout.d.ts +94 -0
  111. 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,9 @@
1
+ {
2
+ "moduleFileExtensions": ["js", "json", "ts"],
3
+ "rootDir": ".",
4
+ "testEnvironment": "node",
5
+ "testRegex": ".e2e-spec.ts$",
6
+ "transform": {
7
+ "^.+\\.(t|j)s$": "ts-jest"
8
+ }
9
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4
+ }
@@ -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,11 @@
1
+ "use client"
2
+
3
+ import { GeneralSettings } from "@solidxai/core-ui"
4
+
5
+ const Page = () => {
6
+ return (
7
+ <GeneralSettings />
8
+ )
9
+ }
10
+
11
+ export default Page
@@ -0,0 +1,11 @@
1
+ import { AdminLayout } from "@solidxai/core-ui";
2
+ const layout = ({ children }: { children: React.ReactNode }) => {
3
+
4
+ return (
5
+ <AdminLayout>
6
+ {children}
7
+ </AdminLayout>
8
+ );
9
+ };
10
+
11
+ export default layout;
@@ -0,0 +1,8 @@
1
+ "use client"
2
+ import React from "react";
3
+
4
+ const Loading = () => {
5
+ return <div className="load"></div>;
6
+ };
7
+
8
+ export default Loading;
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { SolidAdmin } from "@solidxai/core-ui"
3
+
4
+ const page = () => {
5
+ return (
6
+ <SolidAdmin />
7
+ );
8
+ };
9
+
10
+ export default page;
@@ -0,0 +1,6 @@
1
+ import NextAuth from "next-auth";
2
+ import { authProviders } from "@solidxai/core-ui";
3
+
4
+ const auth = NextAuth(authProviders);
5
+
6
+ export { auth as GET, auth as POST };
@@ -0,0 +1,12 @@
1
+ "use client"
2
+ import {SolidResetPassword} from "@solidxai/core-ui";
3
+
4
+ const ForgotPasswordPage = () => {
5
+ return (
6
+ <div>
7
+ <SolidResetPassword />
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export default ForgotPasswordPage;
@@ -0,0 +1,11 @@
1
+ import { SolidForgotPassword } from "@solidxai/core-ui";
2
+
3
+ const ForgotPasswordPage = () => {
4
+ return (
5
+ <div>
6
+ <SolidForgotPassword />
7
+ </div>
8
+ );
9
+ };
10
+
11
+ export default ForgotPasswordPage;
@@ -0,0 +1,11 @@
1
+ import {SolidForgotPassword} from "@solidxai/core-ui";
2
+
3
+ const InitiateForgotPassword = () => {
4
+ return (
5
+ <div>
6
+ <SolidForgotPassword />
7
+ </div>
8
+ );
9
+ };
10
+
11
+ export default InitiateForgotPassword;
@@ -0,0 +1,11 @@
1
+ "use client"
2
+
3
+ import { ForgotPasswordThankYou } from "@solidxai/core-ui";
4
+
5
+ const InitiateForgotPasswordThankYou = () => {
6
+ return (
7
+ <ForgotPasswordThankYou />
8
+ );
9
+ };
10
+
11
+ export default InitiateForgotPasswordThankYou;
@@ -0,0 +1,9 @@
1
+ import { GoogleAuthChecking } from "@solidxai/core-ui";
2
+
3
+ const InitiateGoogleOAuth = () => {
4
+ return (
5
+ <GoogleAuthChecking />
6
+ )
7
+ }
8
+
9
+ export default InitiateGoogleOAuth
@@ -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;
@@ -0,0 +1,10 @@
1
+ import { AuthLayout } from "@solidxai/core-ui";
2
+
3
+ const AuthLayoutContainer = ({ children }: { children: React.ReactNode }) => {
4
+ return (
5
+ <AuthLayout>
6
+ {children}
7
+ </AuthLayout>
8
+ )
9
+ }
10
+ export default AuthLayoutContainer
@@ -0,0 +1,12 @@
1
+ "use client"
2
+ import {SolidLogin} from "@solidxai/core-ui";
3
+
4
+ const LoginPage = () => {
5
+ return (
6
+ <div>
7
+ <SolidLogin />
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export default LoginPage;
@@ -0,0 +1,12 @@
1
+ import {SolidOTPVerify} from "@solidxai/core-ui";
2
+ import React from "react";
3
+
4
+ const SolidOTPVerifyPage = () => {
5
+ return (
6
+ <div>
7
+ <SolidOTPVerify />
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export default SolidOTPVerifyPage;
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { SolidRegister } from "@solidxai/core-ui";
3
+
4
+ const RegisterPage = () => {
5
+ return (
6
+ <div>
7
+ <SolidRegister />
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export default RegisterPage;
@@ -0,0 +1,13 @@
1
+
2
+ import { SolidResetPassword } from "@solidxai/core-ui";
3
+ import React from "react";
4
+
5
+ const ResetPasswordPage = () => {
6
+ return (
7
+ <div>
8
+ <SolidResetPassword />
9
+ </div>
10
+ );
11
+ };
12
+
13
+ export default ResetPasswordPage;