@arikajs/cli 0.0.4 → 0.0.5

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 (228) hide show
  1. package/README.md +99 -6
  2. package/dist/bin/arika.js +2 -2
  3. package/dist/bin/arika.js.map +1 -1
  4. package/dist/src/ApplicationLoader.d.ts +5 -0
  5. package/dist/src/ApplicationLoader.d.ts.map +1 -1
  6. package/dist/src/ApplicationLoader.js +24 -2
  7. package/dist/src/ApplicationLoader.js.map +1 -1
  8. package/dist/src/Bootstrap.d.ts.map +1 -1
  9. package/dist/src/Bootstrap.js +35 -0
  10. package/dist/src/Bootstrap.js.map +1 -1
  11. package/dist/src/Commands/AuthApiInstallCommand.d.ts +24 -0
  12. package/dist/src/Commands/AuthApiInstallCommand.d.ts.map +1 -0
  13. package/dist/src/Commands/AuthApiInstallCommand.js +751 -0
  14. package/dist/src/Commands/AuthApiInstallCommand.js.map +1 -0
  15. package/dist/src/Commands/AuthInstallCommand.d.ts +7 -0
  16. package/dist/src/Commands/AuthInstallCommand.d.ts.map +1 -0
  17. package/dist/src/Commands/AuthInstallCommand.js +46 -0
  18. package/dist/src/Commands/AuthInstallCommand.js.map +1 -0
  19. package/dist/src/Commands/AuthWebInstallCommand.d.ts +31 -0
  20. package/dist/src/Commands/AuthWebInstallCommand.d.ts.map +1 -0
  21. package/dist/src/Commands/AuthWebInstallCommand.js +1100 -0
  22. package/dist/src/Commands/AuthWebInstallCommand.js.map +1 -0
  23. package/dist/src/Commands/BenchmarkCommand.d.ts +7 -0
  24. package/dist/src/Commands/BenchmarkCommand.d.ts.map +1 -0
  25. package/dist/src/Commands/BenchmarkCommand.js +25 -0
  26. package/dist/src/Commands/BenchmarkCommand.js.map +1 -0
  27. package/dist/src/Commands/CacheClearCommand.d.ts +7 -0
  28. package/dist/src/Commands/CacheClearCommand.d.ts.map +1 -0
  29. package/dist/src/Commands/CacheClearCommand.js +33 -0
  30. package/dist/src/Commands/CacheClearCommand.js.map +1 -0
  31. package/dist/src/Commands/CacheTableCommand.d.ts.map +1 -1
  32. package/dist/src/Commands/CacheTableCommand.js +21 -9
  33. package/dist/src/Commands/CacheTableCommand.js.map +1 -1
  34. package/dist/src/Commands/ConfigCacheCommand.d.ts +7 -0
  35. package/dist/src/Commands/ConfigCacheCommand.d.ts.map +1 -0
  36. package/dist/src/Commands/ConfigCacheCommand.js +86 -0
  37. package/dist/src/Commands/ConfigCacheCommand.js.map +1 -0
  38. package/dist/src/Commands/ConfigClearCommand.d.ts +7 -0
  39. package/dist/src/Commands/ConfigClearCommand.d.ts.map +1 -0
  40. package/dist/src/Commands/ConfigClearCommand.js +29 -0
  41. package/dist/src/Commands/ConfigClearCommand.js.map +1 -0
  42. package/dist/src/Commands/DocsGenerateCommand.d.ts +0 -1
  43. package/dist/src/Commands/DocsGenerateCommand.d.ts.map +1 -1
  44. package/dist/src/Commands/DocsGenerateCommand.js +68 -77
  45. package/dist/src/Commands/DocsGenerateCommand.js.map +1 -1
  46. package/dist/src/Commands/EnvValidateCommand.d.ts +7 -0
  47. package/dist/src/Commands/EnvValidateCommand.d.ts.map +1 -0
  48. package/dist/src/Commands/EnvValidateCommand.js +51 -0
  49. package/dist/src/Commands/EnvValidateCommand.js.map +1 -0
  50. package/dist/src/Commands/ListCommand.d.ts.map +1 -1
  51. package/dist/src/Commands/ListCommand.js +15 -8
  52. package/dist/src/Commands/ListCommand.js.map +1 -1
  53. package/dist/src/Commands/MakeCommand.d.ts +7 -0
  54. package/dist/src/Commands/MakeCommand.d.ts.map +1 -0
  55. package/dist/src/Commands/MakeCommand.js +110 -0
  56. package/dist/src/Commands/MakeCommand.js.map +1 -0
  57. package/dist/src/Commands/MakeCommandCommand.d.ts +20 -0
  58. package/dist/src/Commands/MakeCommandCommand.d.ts.map +1 -0
  59. package/dist/src/Commands/MakeCommandCommand.js +82 -0
  60. package/dist/src/Commands/MakeCommandCommand.js.map +1 -0
  61. package/dist/src/Commands/MakeControllerCommand.d.ts +17 -0
  62. package/dist/src/Commands/MakeControllerCommand.d.ts.map +1 -0
  63. package/dist/src/Commands/MakeControllerCommand.js +90 -0
  64. package/dist/src/Commands/MakeControllerCommand.js.map +1 -0
  65. package/dist/src/Commands/MakeEventCommand.d.ts +8 -0
  66. package/dist/src/Commands/MakeEventCommand.d.ts.map +1 -0
  67. package/dist/src/Commands/MakeEventCommand.js +48 -0
  68. package/dist/src/Commands/MakeEventCommand.js.map +1 -0
  69. package/dist/src/Commands/MakeJobCommand.d.ts +8 -0
  70. package/dist/src/Commands/MakeJobCommand.d.ts.map +1 -0
  71. package/dist/src/Commands/MakeJobCommand.js +55 -0
  72. package/dist/src/Commands/MakeJobCommand.js.map +1 -0
  73. package/dist/src/Commands/MakeListenerCommand.d.ts +8 -0
  74. package/dist/src/Commands/MakeListenerCommand.d.ts.map +1 -0
  75. package/dist/src/Commands/MakeListenerCommand.js +55 -0
  76. package/dist/src/Commands/MakeListenerCommand.js.map +1 -0
  77. package/dist/src/Commands/MakeMiddlewareCommand.d.ts +17 -0
  78. package/dist/src/Commands/MakeMiddlewareCommand.d.ts.map +1 -0
  79. package/dist/src/Commands/MakeMiddlewareCommand.js +69 -0
  80. package/dist/src/Commands/MakeMiddlewareCommand.js.map +1 -0
  81. package/dist/src/Commands/MakeMigrationCommand.js +4 -4
  82. package/dist/src/Commands/MakeMigrationCommand.js.map +1 -1
  83. package/dist/src/Commands/MakeModelCommand.d.ts +26 -0
  84. package/dist/src/Commands/MakeModelCommand.d.ts.map +1 -0
  85. package/dist/src/Commands/MakeModelCommand.js +193 -0
  86. package/dist/src/Commands/MakeModelCommand.js.map +1 -0
  87. package/dist/src/Commands/MakeProviderCommand.d.ts +17 -0
  88. package/dist/src/Commands/MakeProviderCommand.d.ts.map +1 -0
  89. package/dist/src/Commands/MakeProviderCommand.js +72 -0
  90. package/dist/src/Commands/MakeProviderCommand.js.map +1 -0
  91. package/dist/src/Commands/MakeViewCommand.d.ts +7 -0
  92. package/dist/src/Commands/MakeViewCommand.d.ts.map +1 -0
  93. package/dist/src/Commands/MakeViewCommand.js +37 -0
  94. package/dist/src/Commands/MakeViewCommand.js.map +1 -0
  95. package/dist/src/Commands/MigrateFreshCommand.d.ts +10 -0
  96. package/dist/src/Commands/MigrateFreshCommand.d.ts.map +1 -0
  97. package/dist/src/Commands/MigrateFreshCommand.js +129 -0
  98. package/dist/src/Commands/MigrateFreshCommand.js.map +1 -0
  99. package/dist/src/Commands/NewCommand.d.ts.map +1 -1
  100. package/dist/src/Commands/NewCommand.js +92 -24
  101. package/dist/src/Commands/NewCommand.js.map +1 -1
  102. package/dist/src/Commands/QueueFailedCommand.d.ts +7 -0
  103. package/dist/src/Commands/QueueFailedCommand.d.ts.map +1 -0
  104. package/dist/src/Commands/QueueFailedCommand.js +30 -0
  105. package/dist/src/Commands/QueueFailedCommand.js.map +1 -0
  106. package/dist/src/Commands/QueueFailedTableCommand.d.ts +7 -0
  107. package/dist/src/Commands/QueueFailedTableCommand.d.ts.map +1 -0
  108. package/dist/src/Commands/QueueFailedTableCommand.js +55 -0
  109. package/dist/src/Commands/QueueFailedTableCommand.js.map +1 -0
  110. package/dist/src/Commands/QueueFlushCommand.d.ts +7 -0
  111. package/dist/src/Commands/QueueFlushCommand.d.ts.map +1 -0
  112. package/dist/src/Commands/QueueFlushCommand.js +21 -0
  113. package/dist/src/Commands/QueueFlushCommand.js.map +1 -0
  114. package/dist/src/Commands/QueueRetryCommand.d.ts +7 -0
  115. package/dist/src/Commands/QueueRetryCommand.d.ts.map +1 -0
  116. package/dist/src/Commands/QueueRetryCommand.js +36 -0
  117. package/dist/src/Commands/QueueRetryCommand.js.map +1 -0
  118. package/dist/src/Commands/QueueTableCommand.d.ts.map +1 -1
  119. package/dist/src/Commands/QueueTableCommand.js +19 -13
  120. package/dist/src/Commands/QueueTableCommand.js.map +1 -1
  121. package/dist/src/Commands/QueueWorkCommand.d.ts +8 -0
  122. package/dist/src/Commands/QueueWorkCommand.d.ts.map +1 -0
  123. package/dist/src/Commands/QueueWorkCommand.js +88 -0
  124. package/dist/src/Commands/QueueWorkCommand.js.map +1 -0
  125. package/dist/src/Commands/RouteListCommand.d.ts +7 -0
  126. package/dist/src/Commands/RouteListCommand.d.ts.map +1 -0
  127. package/dist/src/Commands/RouteListCommand.js +108 -0
  128. package/dist/src/Commands/RouteListCommand.js.map +1 -0
  129. package/dist/src/Commands/ScheduleRunCommand.d.ts +9 -0
  130. package/dist/src/Commands/ScheduleRunCommand.d.ts.map +1 -0
  131. package/dist/src/Commands/ScheduleRunCommand.js +80 -0
  132. package/dist/src/Commands/ScheduleRunCommand.js.map +1 -0
  133. package/dist/src/Commands/ScheduleWorkCommand.d.ts +9 -0
  134. package/dist/src/Commands/ScheduleWorkCommand.d.ts.map +1 -0
  135. package/dist/src/Commands/ScheduleWorkCommand.js +81 -0
  136. package/dist/src/Commands/ScheduleWorkCommand.js.map +1 -0
  137. package/dist/src/Commands/ServeCommand.d.ts +1 -0
  138. package/dist/src/Commands/ServeCommand.d.ts.map +1 -1
  139. package/dist/src/Commands/ServeCommand.js +111 -21
  140. package/dist/src/Commands/ServeCommand.js.map +1 -1
  141. package/dist/src/TemplateManager.d.ts +4 -0
  142. package/dist/src/TemplateManager.d.ts.map +1 -1
  143. package/dist/src/TemplateManager.js +35 -6
  144. package/dist/src/TemplateManager.js.map +1 -1
  145. package/dist/templates/app/.env.example +47 -0
  146. package/dist/templates/app/README.md +62 -0
  147. package/dist/templates/app/app/Exceptions/Handler.ts +19 -0
  148. package/dist/templates/app/app/Http/Controllers/UserController.ts +90 -0
  149. package/dist/templates/app/app/Http/Kernel.ts +43 -0
  150. package/dist/templates/app/app/Http/Middleware/Authenticate.ts +10 -0
  151. package/dist/templates/app/app/Http/Middleware/EnsureEmailIsVerified.ts +18 -0
  152. package/dist/templates/app/app/Http/Middleware/ExampleMiddleware.ts +12 -0
  153. package/dist/templates/app/app/Http/Middleware/RedirectIfAuthenticated.ts +18 -0
  154. package/dist/templates/app/app/Http/Middleware/TrimStrings.ts +12 -0
  155. package/dist/templates/app/app/Http/Middleware/TrustProxies.ts +23 -0
  156. package/dist/templates/app/app/Http/Middleware/VerifyCsrfToken.ts +10 -0
  157. package/dist/templates/app/app/Models/User.ts +15 -0
  158. package/dist/templates/app/app/Providers/AppServiceProvider.ts +17 -0
  159. package/dist/templates/app/app/Providers/RouteServiceProvider.ts +35 -0
  160. package/dist/templates/app/bootstrap/app.ts +41 -0
  161. package/dist/templates/app/config/app.ts +10 -0
  162. package/dist/templates/app/config/cache.ts +44 -0
  163. package/dist/templates/app/config/database.ts +63 -0
  164. package/dist/templates/app/config/filesystems.ts +35 -0
  165. package/dist/templates/app/config/http.ts +6 -0
  166. package/dist/templates/app/config/logging.ts +37 -0
  167. package/dist/templates/app/config/mail.ts +29 -0
  168. package/dist/templates/app/config/queue.ts +42 -0
  169. package/{templates/app/database/migrations/0001_create_users_table.ts → dist/templates/app/database/migrations/2024_01_01_000001_create_users_table.ts} +3 -1
  170. package/dist/templates/app/database/migrations/2024_01_01_000002_create_password_resets_table.ts +22 -0
  171. package/dist/templates/app/database/migrations/2024_01_01_000003_create_failed_jobs_table.ts +25 -0
  172. package/dist/templates/app/package.json +22 -0
  173. package/dist/templates/app/public/assets/img/favicon.png +0 -0
  174. package/dist/templates/app/public/assets/img/logo.png +0 -0
  175. package/dist/templates/app/resources/views/errors/401.ark.html +320 -0
  176. package/dist/templates/app/resources/views/errors/403.ark.html +320 -0
  177. package/dist/templates/app/resources/views/errors/404.ark.html +320 -0
  178. package/dist/templates/app/resources/views/errors/419.ark.html +320 -0
  179. package/dist/templates/app/resources/views/errors/429.ark.html +320 -0
  180. package/dist/templates/app/resources/views/errors/500.ark.html +320 -0
  181. package/dist/templates/app/resources/views/errors/503.ark.html +320 -0
  182. package/dist/templates/app/resources/views/welcome.ark.html +846 -0
  183. package/dist/templates/app/routes/api.ts +39 -0
  184. package/dist/templates/app/routes/web.ts +10 -0
  185. package/dist/templates/app/server.ts +15 -0
  186. package/dist/templates/app/tsconfig.json +27 -0
  187. package/package.json +16 -10
  188. package/templates/app/.env.example +2 -2
  189. package/templates/app/README.md +62 -0
  190. package/templates/app/app/Exceptions/Handler.ts +19 -0
  191. package/templates/app/app/Http/Controllers/UserController.ts +90 -0
  192. package/templates/app/app/Http/Kernel.ts +39 -14
  193. package/templates/app/app/Http/Middleware/Authenticate.ts +10 -0
  194. package/templates/app/app/Http/Middleware/EnsureEmailIsVerified.ts +18 -0
  195. package/templates/app/app/Http/Middleware/ExampleMiddleware.ts +12 -0
  196. package/templates/app/app/Http/Middleware/RedirectIfAuthenticated.ts +18 -0
  197. package/templates/app/app/Http/Middleware/TrimStrings.ts +12 -0
  198. package/templates/app/app/Http/Middleware/TrustProxies.ts +23 -0
  199. package/templates/app/app/Http/Middleware/VerifyCsrfToken.ts +10 -0
  200. package/templates/app/app/Models/User.ts +5 -5
  201. package/templates/app/app/Providers/AppServiceProvider.ts +17 -0
  202. package/templates/app/app/Providers/RouteServiceProvider.ts +35 -0
  203. package/templates/app/bootstrap/app.ts +30 -2
  204. package/templates/app/config/app.ts +7 -6
  205. package/templates/app/config/cache.ts +14 -7
  206. package/templates/app/config/database.ts +48 -21
  207. package/templates/app/config/filesystems.ts +11 -9
  208. package/templates/app/config/http.ts +3 -2
  209. package/templates/app/config/logging.ts +6 -4
  210. package/templates/app/config/mail.ts +10 -8
  211. package/templates/app/config/queue.ts +6 -4
  212. package/templates/app/database/migrations/2024_01_01_000001_create_users_table.ts +25 -0
  213. package/templates/app/database/migrations/2024_01_01_000002_create_password_resets_table.ts +22 -0
  214. package/templates/app/database/migrations/2024_01_01_000003_create_failed_jobs_table.ts +25 -0
  215. package/templates/app/package.json +4 -3
  216. package/templates/app/public/assets/img/favicon.png +0 -0
  217. package/templates/app/public/assets/img/logo.png +0 -0
  218. package/templates/app/resources/views/welcome.ark.html +846 -0
  219. package/templates/app/routes/api.ts +8 -3
  220. package/templates/app/routes/web.ts +8 -4
  221. package/templates/app/server.ts +3 -4
  222. package/templates/app/tsconfig.json +12 -0
  223. package/dist/tests/Cli.test.d.ts +0 -2
  224. package/dist/tests/Cli.test.d.ts.map +0 -1
  225. package/dist/tests/Cli.test.js +0 -16
  226. package/dist/tests/Cli.test.js.map +0 -1
  227. package/templates/app/app/Controllers/UserController.ts +0 -88
  228. package/templates/app/resources/views/welcome.html +0 -470
@@ -0,0 +1,37 @@
1
+ import { env } from 'arikajs';
2
+
3
+ export default {
4
+ /**
5
+ * Default Log Channel
6
+ */
7
+ default: env('LOG_CHANNEL', 'stack'),
8
+
9
+ /**
10
+ * Log Channels
11
+ */
12
+ channels: {
13
+ stack: {
14
+ driver: 'stack',
15
+ channels: ['console', 'single'],
16
+ ignore_exceptions: false,
17
+ },
18
+
19
+ single: {
20
+ driver: 'file',
21
+ path: './storage/logs/arika.log',
22
+ level: env('LOG_LEVEL', 'debug'),
23
+ },
24
+
25
+ daily: {
26
+ driver: 'daily',
27
+ path: './storage/logs/arika.log',
28
+ level: env('LOG_LEVEL', 'debug'),
29
+ days: 14,
30
+ },
31
+
32
+ console: {
33
+ driver: 'console',
34
+ level: env('LOG_LEVEL', 'debug'),
35
+ },
36
+ },
37
+ };
@@ -0,0 +1,29 @@
1
+ import { env } from 'arikajs';
2
+
3
+ export default {
4
+ default: env('MAIL_MAILER', 'log'),
5
+
6
+ mailers: {
7
+ smtp: {
8
+ transport: 'smtp',
9
+ host: env('MAIL_HOST', '127.0.0.1'),
10
+ port: env('MAIL_PORT', 2525),
11
+ encryption: env('MAIL_ENCRYPTION', 'tls'),
12
+ username: env('MAIL_USERNAME'),
13
+ password: env('MAIL_PASSWORD'),
14
+ },
15
+
16
+ log: {
17
+ transport: 'log',
18
+ },
19
+
20
+ array: {
21
+ transport: 'array',
22
+ },
23
+ },
24
+
25
+ from: {
26
+ address: env('MAIL_FROM_ADDRESS', 'hello@example.com'),
27
+ name: env('MAIL_FROM_NAME', 'Example'),
28
+ },
29
+ };
@@ -0,0 +1,42 @@
1
+ import { env } from 'arikajs';
2
+
3
+ export default {
4
+ /**
5
+ * Default Queue Connection Name
6
+ */
7
+ default: env('QUEUE_CONNECTION', 'sync'),
8
+
9
+ /**
10
+ * Queue Connections
11
+ */
12
+ connections: {
13
+ sync: {
14
+ driver: 'sync',
15
+ },
16
+
17
+ database: {
18
+ driver: 'database',
19
+ table: 'jobs',
20
+ queue: 'default',
21
+ retry_after: 90,
22
+ after_commit: false,
23
+ },
24
+ },
25
+
26
+ /**
27
+ * Job Batching
28
+ */
29
+ batching: {
30
+ database: env('DB_CONNECTION', 'mysql'),
31
+ table: 'job_batches',
32
+ },
33
+
34
+ /**
35
+ * Failed Queue Jobs
36
+ */
37
+ failed: {
38
+ driver: env('QUEUE_FAILED_DRIVER', 'database-uuids'),
39
+ database: env('DB_CONNECTION', 'mysql'),
40
+ table: 'failed_jobs',
41
+ },
42
+ };
@@ -1,4 +1,4 @@
1
- import { Migration, SchemaBuilder } from '@arikajs/database';
1
+ import { Migration, SchemaBuilder } from 'arikajs';
2
2
 
3
3
  export default class CreateUsersTable extends Migration {
4
4
  /**
@@ -9,7 +9,9 @@ export default class CreateUsersTable extends Migration {
9
9
  table.id();
10
10
  table.string('name');
11
11
  table.string('email').unique();
12
+ table.timestamp('email_verified_at').nullable();
12
13
  table.string('password');
14
+ table.string('remember_token', 100).nullable();
13
15
  table.timestamps();
14
16
  });
15
17
  }
@@ -0,0 +1,22 @@
1
+ import { Migration, SchemaBuilder } from 'arikajs';
2
+
3
+ export default class CreatePasswordResetsTable extends Migration {
4
+ /**
5
+ * Run the migrations.
6
+ */
7
+ public async up(schema: SchemaBuilder): Promise<void> {
8
+ await schema.create('password_resets', (table: any) => {
9
+ table.string('email');
10
+ table.index('email');
11
+ table.string('token');
12
+ table.timestamp('created_at').nullable();
13
+ });
14
+ }
15
+
16
+ /**
17
+ * Reverse the migrations.
18
+ */
19
+ public async down(schema: SchemaBuilder): Promise<void> {
20
+ await schema.dropIfExists('password_resets');
21
+ }
22
+ }
@@ -0,0 +1,25 @@
1
+ import { Migration, SchemaBuilder } from 'arikajs';
2
+
3
+ export default class CreateFailedJobsTable extends Migration {
4
+ /**
5
+ * Run the migrations.
6
+ */
7
+ public async up(schema: SchemaBuilder): Promise<void> {
8
+ await schema.create('failed_jobs', (table: any) => {
9
+ table.id();
10
+ table.string('uuid').unique();
11
+ table.text('connection');
12
+ table.text('queue');
13
+ table.text('payload');
14
+ table.text('exception');
15
+ table.timestamp('failed_at').nullable();
16
+ });
17
+ }
18
+
19
+ /**
20
+ * Reverse the migrations.
21
+ */
22
+ public async down(schema: SchemaBuilder): Promise<void> {
23
+ await schema.dropIfExists('failed_jobs');
24
+ }
25
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "rest-api-demo",
3
+ "version": "1.0.0",
4
+ "description": "ArikaJS API Project",
5
+ "private": true,
6
+ "scripts": {
7
+ "dev": "arika serve --dev",
8
+ "start": "node -r tsconfig-paths/register dist/server.js",
9
+ "build": "tsc"
10
+ },
11
+ "dependencies": {
12
+ "arikajs": "file:../arikajs",
13
+ "tsconfig-paths": "^4.0.0"
14
+ },
15
+ "devDependencies": {
16
+ "@arikajs/cli": "file:../cli",
17
+ "typescript": "^5.0.0",
18
+ "tsx": "^4.0.0",
19
+ "@types/node": "^20.0.0"
20
+ },
21
+ "author": "Prakash Tank"
22
+ }
@@ -0,0 +1,320 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-theme="light">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>401 - Authentication Required | {{ config('app.name', 'ArikaJS') }}</title>
8
+ <link rel="icon" type="image/png" href="/assets/img/favicon.png">
9
+ <link
10
+ href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=Plus+Jakarta+Sans:wght@300;400;600;800&display=swap"
11
+ rel="stylesheet">
12
+ <style>
13
+ :root {
14
+ --primary: #6366f1;
15
+ --primary-glow: rgba(99, 102, 241, 0.4);
16
+ --secondary: #8b5cf6;
17
+ --bg: #f8fafc;
18
+ --card-bg: rgba(255, 255, 255, 0.8);
19
+ --text-main: #0f172a;
20
+ --text-muted: #64748b;
21
+ --border: rgba(15, 23, 42, 0.08);
22
+ --aurora-opacity: 0.3;
23
+ --btn-secondary-bg: rgba(15, 23, 42, 0.05);
24
+ --pill-bg: rgba(15, 23, 42, 0.03);
25
+ --h1-gradient: linear-gradient(135deg, #0f172a 30%, #334155 100%);
26
+ }
27
+
28
+ [data-theme="dark"] {
29
+ --bg: #030712;
30
+ --card-bg: rgba(17, 24, 39, 0.7);
31
+ --text-main: #f8fafc;
32
+ --text-muted: #94a3b8;
33
+ --border: rgba(255, 255, 255, 0.08);
34
+ --aurora-opacity: 0.5;
35
+ --btn-secondary-bg: rgba(255, 255, 255, 0.05);
36
+ --pill-bg: rgba(255, 255, 255, 0.03);
37
+ --h1-gradient: linear-gradient(135deg, #fff 30%, rgba(255, 255, 255, 0.5) 100%);
38
+ }
39
+
40
+ * {
41
+ margin: 0;
42
+ padding: 0;
43
+ box-sizing: border-box;
44
+ transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
45
+ }
46
+
47
+ body {
48
+ font-family: 'Plus Jakarta Sans', sans-serif;
49
+ background-color: var(--bg);
50
+ color: var(--text-main);
51
+ min-height: 100vh;
52
+ display: flex;
53
+ flex-direction: column;
54
+ overflow-x: hidden;
55
+ position: relative;
56
+ }
57
+
58
+ header {
59
+ width: 100%;
60
+ padding: 1.5rem 5%;
61
+ display: flex;
62
+ justify-content: space-between;
63
+ align-items: center;
64
+ position: fixed;
65
+ top: 0;
66
+ z-index: 100;
67
+ backdrop-filter: blur(10px);
68
+ border-bottom: 1px solid var(--border);
69
+ }
70
+
71
+ .logo-container {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 1rem;
75
+ text-decoration: none;
76
+ }
77
+
78
+ .logo {
79
+ width: 135px;
80
+ height: auto;
81
+ filter: drop-shadow(0 4px 6px rgba(99, 102, 241, 0.2));
82
+ }
83
+
84
+ [data-theme="dark"] .logo {
85
+ filter: invert(1) drop-shadow(0 4px 6px rgba(99, 102, 241, 0.3));
86
+ }
87
+
88
+ .theme-toggle {
89
+ background: var(--card-bg);
90
+ border: 1px solid var(--border);
91
+ padding: 0.5rem;
92
+ border-radius: 99px;
93
+ cursor: pointer;
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 0.5rem;
97
+ }
98
+
99
+ .theme-toggle svg {
100
+ width: 20px;
101
+ height: 20px;
102
+ color: var(--text-main);
103
+ }
104
+
105
+ .aurora {
106
+ position: fixed;
107
+ top: 0;
108
+ left: 0;
109
+ width: 100%;
110
+ height: 100%;
111
+ z-index: -1;
112
+ filter: blur(100px);
113
+ opacity: var(--aurora-opacity);
114
+ pointer-events: none;
115
+ }
116
+
117
+ .aurora-blur {
118
+ position: absolute;
119
+ border-radius: 50%;
120
+ animation: move 20s infinite alternate;
121
+ }
122
+
123
+ .blur-1 {
124
+ width: 50vw;
125
+ height: 50vw;
126
+ background: radial-gradient(circle, var(--primary) 0%, transparent 70%);
127
+ top: -10%;
128
+ left: -10%;
129
+ }
130
+
131
+ .blur-2 {
132
+ width: 40vw;
133
+ height: 40vw;
134
+ background: radial-gradient(circle, var(--secondary) 0%, transparent 70%);
135
+ bottom: -10%;
136
+ right: -10%;
137
+ animation-duration: 25s;
138
+ }
139
+
140
+ @keyframes move {
141
+ from {
142
+ transform: translate(0, 0) scale(1);
143
+ }
144
+
145
+ to {
146
+ transform: translate(10%, 10%) scale(1.1);
147
+ }
148
+ }
149
+
150
+ .main-content {
151
+ flex: 1;
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: center;
155
+ padding: 8rem 2rem 4rem;
156
+ }
157
+
158
+ .container {
159
+ position: relative;
160
+ z-index: 10;
161
+ max-width: 800px;
162
+ width: 100%;
163
+ text-align: center;
164
+ animation: fadeIn 1s ease-out;
165
+ }
166
+
167
+ @keyframes fadeIn {
168
+ from {
169
+ opacity: 0;
170
+ transform: translateY(20px);
171
+ }
172
+
173
+ to {
174
+ opacity: 1;
175
+ transform: translateY(0);
176
+ }
177
+ }
178
+
179
+ .badge {
180
+ display: inline-block;
181
+ padding: 0.5rem 1.25rem;
182
+ background: rgba(99, 102, 241, 0.1);
183
+ border: 1px solid var(--primary);
184
+ color: var(--primary);
185
+ border-radius: 999px;
186
+ font-size: 0.85rem;
187
+ font-weight: 600;
188
+ margin-bottom: 2rem;
189
+ text-transform: uppercase;
190
+ letter-spacing: 0.1em;
191
+ }
192
+
193
+ h1 {
194
+ font-family: 'Outfit', sans-serif;
195
+ font-size: clamp(3rem, 10vw, 6rem);
196
+ font-weight: 800;
197
+ line-height: 1;
198
+ margin-bottom: 1.5rem;
199
+ letter-spacing: -0.04em;
200
+ background: var(--h1-gradient);
201
+ background-clip: text;
202
+ -webkit-background-clip: text;
203
+ -webkit-text-fill-color: transparent;
204
+ }
205
+
206
+ .description {
207
+ font-size: 1.25rem;
208
+ color: var(--text-muted);
209
+ max-width: 600px;
210
+ margin: 0 auto 3rem;
211
+ line-height: 1.6;
212
+ font-weight: 300;
213
+ }
214
+
215
+ .btn {
216
+ padding: 1rem 2.5rem;
217
+ border-radius: 12px;
218
+ font-weight: 600;
219
+ text-decoration: none;
220
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
221
+ font-size: 1rem;
222
+ display: inline-block;
223
+ }
224
+
225
+ .btn-primary {
226
+ background: var(--primary);
227
+ color: white;
228
+ box-shadow: 0 4px 20px var(--primary-glow);
229
+ }
230
+
231
+ .btn-primary:hover {
232
+ transform: translateY(-2px);
233
+ box-shadow: 0 8px 30px var(--primary-glow);
234
+ filter: brightness(1.1);
235
+ }
236
+
237
+ .footer {
238
+ padding: 3rem 0;
239
+ color: var(--text-muted);
240
+ font-size: 0.875rem;
241
+ text-align: center;
242
+ border-top: 1px solid var(--border);
243
+ }
244
+
245
+ .footer span {
246
+ color: var(--primary);
247
+ font-weight: 600;
248
+ }
249
+
250
+ @media (max-width: 768px) {
251
+ h1 {
252
+ font-size: 4rem;
253
+ }
254
+
255
+ header {
256
+ padding: 1rem 5%;
257
+ }
258
+ }
259
+ </style>
260
+ </head>
261
+
262
+ <body>
263
+ <header>
264
+ <a href="/" class="logo-container">
265
+ <img src="/assets/img/logo.png" alt="{{ config('app.name', 'ArikaJS') }} Logo" class="logo">
266
+ </a>
267
+ <button class="theme-toggle" id="theme-toggle" title="Toggle Theme">
268
+ <svg id="moon-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
269
+ stroke="currentColor">
270
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
271
+ d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
272
+ </svg>
273
+ <svg id="sun-icon" style="display: none;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
274
+ stroke="currentColor">
275
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
276
+ d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
277
+ </svg>
278
+ </button>
279
+ </header>
280
+ <div class="aurora">
281
+ <div class="aurora-blur blur-1"></div>
282
+ <div class="aurora-blur blur-2"></div>
283
+ </div>
284
+ <main class="main-content">
285
+ <div class="container">
286
+ <div class="badge">Error 401</div>
287
+ <h1>Authentication Required</h1>
288
+ <p class="description">You must be logged in to view this page. Please sign in to your account and try
289
+ again.</p>
290
+ <div class="actions">
291
+ <a href="/auth/login" class="btn btn-primary">Sign In</a>
292
+ </div>
293
+ </div>
294
+ </main>
295
+ <footer class="footer">
296
+ &copy; 2026 <span>{{ config('app.name', 'ArikaJS') }}</span>. Premium Web Framework.
297
+ </footer>
298
+ <script>
299
+ const themeToggle = document.getElementById('theme-toggle');
300
+ const moonIcon = document.getElementById('moon-icon');
301
+ const sunIcon = document.getElementById('sun-icon');
302
+ const html = document.documentElement;
303
+ const savedTheme = localStorage.getItem('theme') || 'light';
304
+ html.setAttribute('data-theme', savedTheme);
305
+ updateIcons(savedTheme);
306
+ themeToggle.addEventListener('click', () => {
307
+ const currentTheme = html.getAttribute('data-theme');
308
+ const newTheme = currentTheme === 'light' ? 'dark' : 'light';
309
+ html.setAttribute('data-theme', newTheme);
310
+ localStorage.setItem('theme', newTheme);
311
+ updateIcons(newTheme);
312
+ });
313
+ function updateIcons(theme) {
314
+ if (theme === 'dark') { moonIcon.style.display = 'none'; sunIcon.style.display = 'block'; }
315
+ else { moonIcon.style.display = 'block'; sunIcon.style.display = 'none'; }
316
+ }
317
+ </script>
318
+ </body>
319
+
320
+ </html>