@tioelvis/next-template 2.4.8 → 3.0.0

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 (132) hide show
  1. package/README.md +42 -42
  2. package/package.json +44 -92
  3. package/src/actions/configure-package-json.js +32 -0
  4. package/src/actions/init-project.js +40 -0
  5. package/src/actions/init-shadcn-ui.js +48 -0
  6. package/src/actions/init-theme.js +28 -0
  7. package/src/actions/init-tioelvis-components.js +42 -0
  8. package/src/actions/install-main-packages.js +51 -0
  9. package/src/constants.js +234 -97
  10. package/src/lib/exception.js +9 -0
  11. package/src/lib/utils.js +55 -0
  12. package/src/main.js +158 -229
  13. package/src/template/eslint.config.mjs +15 -13
  14. package/src/template/postcss.config.mjs +3 -1
  15. package/src/template/src/app/globals.css +0 -122
  16. package/src/template/src/app/layout.tsx +7 -15
  17. package/src/template/src/app/page.tsx +6 -2
  18. package/src/template/tsconfig.json +9 -2
  19. package/src/themes/blue.css +141 -0
  20. package/src/themes/default.css +141 -0
  21. package/src/themes/green.css +141 -0
  22. package/src/themes/orange.css +141 -0
  23. package/src/themes/red.css +141 -0
  24. package/src/themes/rose.css +141 -0
  25. package/src/themes/violet.css +141 -0
  26. package/src/themes/yellow.css +141 -0
  27. package/src/tioelvis-components/max-width-wrapper.tsx +21 -0
  28. package/src/app/components/ui/accordion.json +0 -6
  29. package/src/app/components/ui/accordion.tsx +0 -64
  30. package/src/app/components/ui/alert-dialog.json +0 -6
  31. package/src/app/components/ui/alert-dialog.tsx +0 -157
  32. package/src/app/components/ui/alert.json +0 -6
  33. package/src/app/components/ui/alert.tsx +0 -66
  34. package/src/app/components/ui/aspect-ratio.json +0 -6
  35. package/src/app/components/ui/aspect-ratio.tsx +0 -11
  36. package/src/app/components/ui/avatar.json +0 -6
  37. package/src/app/components/ui/avatar.tsx +0 -53
  38. package/src/app/components/ui/badge.json +0 -6
  39. package/src/app/components/ui/badge.tsx +0 -46
  40. package/src/app/components/ui/breadcrumb.json +0 -6
  41. package/src/app/components/ui/breadcrumb.tsx +0 -107
  42. package/src/app/components/ui/button.json +0 -6
  43. package/src/app/components/ui/button.tsx +0 -58
  44. package/src/app/components/ui/calendar.json +0 -6
  45. package/src/app/components/ui/calendar.tsx +0 -213
  46. package/src/app/components/ui/card.json +0 -6
  47. package/src/app/components/ui/card.tsx +0 -92
  48. package/src/app/components/ui/carousel.json +0 -6
  49. package/src/app/components/ui/carousel.tsx +0 -236
  50. package/src/app/components/ui/chart.json +0 -6
  51. package/src/app/components/ui/chart.tsx +0 -347
  52. package/src/app/components/ui/checkbox.json +0 -6
  53. package/src/app/components/ui/checkbox.tsx +0 -30
  54. package/src/app/components/ui/collapsible.json +0 -6
  55. package/src/app/components/ui/collapsible.tsx +0 -33
  56. package/src/app/components/ui/command.json +0 -6
  57. package/src/app/components/ui/command.tsx +0 -182
  58. package/src/app/components/ui/context-menu.json +0 -6
  59. package/src/app/components/ui/context-menu.tsx +0 -249
  60. package/src/app/components/ui/dialog.json +0 -6
  61. package/src/app/components/ui/dialog.tsx +0 -141
  62. package/src/app/components/ui/drawer.json +0 -6
  63. package/src/app/components/ui/drawer.tsx +0 -134
  64. package/src/app/components/ui/dropdown-menu.json +0 -6
  65. package/src/app/components/ui/dropdown-menu.tsx +0 -256
  66. package/src/app/components/ui/form.json +0 -12
  67. package/src/app/components/ui/form.tsx +0 -167
  68. package/src/app/components/ui/hover-card.json +0 -6
  69. package/src/app/components/ui/hover-card.tsx +0 -49
  70. package/src/app/components/ui/input-otp.json +0 -6
  71. package/src/app/components/ui/input-otp.tsx +0 -76
  72. package/src/app/components/ui/input.json +0 -6
  73. package/src/app/components/ui/input.tsx +0 -21
  74. package/src/app/components/ui/label.json +0 -6
  75. package/src/app/components/ui/label.tsx +0 -24
  76. package/src/app/components/ui/menubar.json +0 -6
  77. package/src/app/components/ui/menubar.tsx +0 -273
  78. package/src/app/components/ui/navigation-menu.json +0 -6
  79. package/src/app/components/ui/navigation-menu.tsx +0 -164
  80. package/src/app/components/ui/pagination.json +0 -6
  81. package/src/app/components/ui/pagination.tsx +0 -124
  82. package/src/app/components/ui/popover.json +0 -6
  83. package/src/app/components/ui/popover.tsx +0 -55
  84. package/src/app/components/ui/progress.json +0 -6
  85. package/src/app/components/ui/progress.tsx +0 -30
  86. package/src/app/components/ui/radio-group.json +0 -6
  87. package/src/app/components/ui/radio-group.tsx +0 -43
  88. package/src/app/components/ui/resizable.json +0 -6
  89. package/src/app/components/ui/resizable.tsx +0 -55
  90. package/src/app/components/ui/scroll-area.json +0 -6
  91. package/src/app/components/ui/scroll-area.tsx +0 -55
  92. package/src/app/components/ui/select.json +0 -6
  93. package/src/app/components/ui/select.tsx +0 -179
  94. package/src/app/components/ui/separator.json +0 -6
  95. package/src/app/components/ui/separator.tsx +0 -28
  96. package/src/app/components/ui/sheet.json +0 -6
  97. package/src/app/components/ui/sheet.tsx +0 -145
  98. package/src/app/components/ui/sidebar.json +0 -6
  99. package/src/app/components/ui/sidebar.tsx +0 -718
  100. package/src/app/components/ui/skeleton.json +0 -6
  101. package/src/app/components/ui/skeleton.tsx +0 -13
  102. package/src/app/components/ui/slider.json +0 -6
  103. package/src/app/components/ui/slider.tsx +0 -61
  104. package/src/app/components/ui/sonner.json +0 -6
  105. package/src/app/components/ui/sonner.tsx +0 -25
  106. package/src/app/components/ui/switch.json +0 -6
  107. package/src/app/components/ui/switch.tsx +0 -30
  108. package/src/app/components/ui/table.json +0 -6
  109. package/src/app/components/ui/table.tsx +0 -115
  110. package/src/app/components/ui/tabs.json +0 -6
  111. package/src/app/components/ui/tabs.tsx +0 -66
  112. package/src/app/components/ui/textarea.json +0 -6
  113. package/src/app/components/ui/textarea.tsx +0 -18
  114. package/src/app/components/ui/toggle-group.json +0 -6
  115. package/src/app/components/ui/toggle-group.tsx +0 -71
  116. package/src/app/components/ui/toggle.json +0 -6
  117. package/src/app/components/ui/toggle.tsx +0 -47
  118. package/src/app/components/ui/tooltip.json +0 -6
  119. package/src/app/components/ui/tooltip.tsx +0 -60
  120. package/src/app/hooks/use-mobile.ts +0 -21
  121. package/src/app/lib/utils.ts +0 -6
  122. package/src/app/tsconfig.json +0 -27
  123. package/src/template/components.json +0 -21
  124. package/src/template/next-env.d.ts +0 -5
  125. package/src/template/public/.gitkeep +0 -0
  126. package/src/template/src/lib/axios.ts +0 -39
  127. package/src/template/src/lib/constants.ts +0 -1
  128. package/src/template/src/lib/utils.ts +0 -6
  129. package/src/template/src/providers/query.provider.tsx +0 -12
  130. package/src/template/src/providers/theme.provider.tsx +0 -8
  131. package/src/utils.js +0 -113
  132. /package/src/template/{src/app → public}/favicon.ico +0 -0
package/src/main.js CHANGED
@@ -1,229 +1,158 @@
1
- #!/usr/bin/env node
2
-
3
- import {
4
- copy_components,
5
- copy_template,
6
- on_cancel,
7
- run_command,
8
- } from "./utils.js";
9
- import fs from "node:fs";
10
- import chalk from "chalk";
11
- import path from "node:path";
12
- import prompts from "prompts";
13
- import { COMPONENTS, DEPENDENCIES, DEV_DEPENDENCIES } from "./constants.js";
14
-
15
- // Manage Ctrl+C command
16
- process.on("SIGINT", () => on_cancel());
17
-
18
- (async function () {
19
- let DEST;
20
- const CWD = path.resolve(process.cwd());
21
-
22
- const { is_new_project } = await prompts(
23
- {
24
- type: "confirm",
25
- initial: true,
26
- name: "is_new_project",
27
- message: "Is a new project?",
28
- },
29
- { onCancel: on_cancel }
30
- );
31
-
32
- if (is_new_project === true) {
33
- try {
34
- if (fs.existsSync(path.join(CWD, "next.config.ts")) === true) {
35
- throw new Error("Config file already exists");
36
- }
37
-
38
- const responses = await prompts(
39
- [
40
- {
41
- type: "text",
42
- name: "project_name",
43
- message: "What is your project named?",
44
- validate: (e) => {
45
- if (e === undefined || e.trim() === "") {
46
- return chalk.red("⚠️ The name is required");
47
- }
48
-
49
- if (!/^[a-zA-Z0-9-_]+$/.test(e.trim())) {
50
- return chalk.red(
51
- "⚠️ Use only letters, numbers, dashes, and underscores"
52
- );
53
- }
54
-
55
- return true;
56
- },
57
- },
58
- {
59
- type: "select",
60
- name: "package_manager",
61
- message: "Which package manager would you want to use?",
62
- choices: [
63
- { title: "npm", value: "npm" },
64
- { title: "pnpm", value: "pnpm" },
65
- ],
66
- },
67
- {
68
- type: "multiselect",
69
- name: "components",
70
- message: "Which components do you want to install?",
71
- instructions: false,
72
- choices: COMPONENTS.map((e) => {
73
- return { title: e, value: e };
74
- }),
75
- },
76
- ],
77
- { onCancel: on_cancel }
78
- );
79
-
80
- const { project_name, package_manager, components } = responses;
81
-
82
- // Creating folder and copying files
83
- DEST = path.resolve(CWD, project_name);
84
-
85
- if (fs.existsSync(DEST) === true) {
86
- throw new Error("A folder with that name already exists");
87
- }
88
-
89
- console.log(chalk.blue("📁 Creating project..."));
90
-
91
- fs.mkdirSync(DEST, { recursive: true });
92
-
93
- copy_template(DEST);
94
- await copy_components(DEST, components);
95
-
96
- // Initialize package.json
97
- console.log(chalk.blue("📦 Initializing and configure package.json..."));
98
-
99
- const package_json = {
100
- name: project_name,
101
- version: "1.0.0",
102
- private: true,
103
- scripts: {
104
- dev: "next dev --turbopack",
105
- build: "next build",
106
- start: "next start",
107
- lint: "next lint",
108
- },
109
- };
110
-
111
- const package_json_path = path.join(DEST, "package.json");
112
-
113
- fs.writeFileSync(
114
- package_json_path,
115
- JSON.stringify(package_json, null, 2)
116
- );
117
-
118
- // Install dependencies
119
- console.log(chalk.cyan("⬇️ Installing dependencies..."));
120
-
121
- if (package_manager === "npm") {
122
- run_command(`npm install ${DEPENDENCIES.join(" ")}`, DEST);
123
- run_command(`npm install ${DEV_DEPENDENCIES.join(" ")} -D`, DEST);
124
- }
125
-
126
- if (package_manager === "pnpm") {
127
- run_command(`pnpm add ${DEPENDENCIES.join(" ")}`, DEST);
128
- run_command(`pnpm add ${DEV_DEPENDENCIES.join(" ")} -D`, DEST);
129
- }
130
-
131
- // Finish project
132
- console.log(
133
- chalk.yellow(
134
- "⚠️ IMPORTANT: make sure to add your variable NEXT_PUBLIC_API in the .env file, e.g.: NEXT_PUBLIC_API=http://localhost:9000"
135
- )
136
- );
137
-
138
- if (components.some((e) => e === "sonner") === true) {
139
- console.log(
140
- chalk.yellow(
141
- "⚠️ IMPORTANT: you install the sonner component. Don't forget to add the Toaster in your layout"
142
- )
143
- );
144
- }
145
-
146
- console.log(
147
- chalk.green(`\n✅ Project ${project_name} created successfully! 🚀`)
148
- );
149
- } catch (error) {
150
- console.error(chalk.red("❌ Internal error:"), error.message);
151
-
152
- if (fs.existsSync(DEST) === true) {
153
- fs.rmSync(DEST, { recursive: true, force: true });
154
- }
155
-
156
- process.exit(1);
157
- }
158
- }
159
-
160
- if (is_new_project === false) {
161
- let package_manager;
162
-
163
- try {
164
- if (fs.existsSync(path.join(CWD, "next.config.ts")) === false) {
165
- throw new Error("Config file not exists");
166
- }
167
-
168
- const responses = await prompts(
169
- [
170
- {
171
- type: "multiselect",
172
- name: "components",
173
- message: "Which components do you want to install?",
174
- instructions: false,
175
- choices: COMPONENTS.map((e) => {
176
- return { title: e, value: e };
177
- }),
178
- },
179
- {
180
- type: "select",
181
- name: "package_manager",
182
- message: "Which package manager would you want to use?",
183
- choices: [
184
- { title: "npm", value: "npm" },
185
- { title: "pnpm", value: "pnpm" },
186
- ],
187
- },
188
- ],
189
- { onCancel: on_cancel }
190
- );
191
-
192
- const { components, package_manager } = responses;
193
-
194
- // Copying files
195
- DEST = path.resolve(CWD);
196
-
197
- await copy_components(DEST, components);
198
-
199
- // Install dependencies
200
- console.log(chalk.cyan("⬇️ Installing dependencies..."));
201
-
202
- if (package_manager === "npm") {
203
- run_command(`npm install ${DEPENDENCIES.join(" ")}`, DEST);
204
- run_command(`npm install ${DEV_DEPENDENCIES.join(" ")} -D`, DEST);
205
- }
206
-
207
- if (package_manager === "pnpm") {
208
- run_command(`pnpm add ${DEPENDENCIES.join(" ")}`, DEST);
209
- run_command(`pnpm add ${DEV_DEPENDENCIES.join(" ")} -D`, DEST);
210
- }
211
-
212
- // Finish project
213
- if (components.some((e) => e === "sonner") === true) {
214
- console.log(
215
- chalk.yellow(
216
- "⚠️ IMPORTANT: you install the sonner component. Don't forget to add the Toaster in your layout"
217
- )
218
- );
219
- }
220
- console.log(chalk.green("\n✅ Components add successfully!"));
221
- } catch (error) {
222
- console.error(chalk.red("❌ Internal error:"), error.message);
223
-
224
- process.exit(1);
225
- }
226
- }
227
-
228
- process.exit(0);
229
- })();
1
+ #!/usr/bin/env node
2
+
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+
6
+ import chalk from "chalk";
7
+ import prompts from "prompts";
8
+
9
+ import {
10
+ context,
11
+ CWD,
12
+ SHADCN_COMPONENTS,
13
+ THEME_COLORS,
14
+ TIOELVIS_COMPONENTS,
15
+ } from "./constants.js";
16
+
17
+ import { onCancel } from "./lib/utils.js";
18
+ import { Exception } from "./lib/exception.js";
19
+
20
+ import { initProject } from "./actions/init-project.js";
21
+ import { initThemeColor } from "./actions/init-theme.js";
22
+ import { initShadcnUI } from "./actions/init-shadcn-ui.js";
23
+ import { installMainPackages } from "./actions/install-main-packages.js";
24
+ import { configurePackageJSON } from "./actions/configure-package-json.js";
25
+ import { initTioElvisComponents } from "./actions/init-tioelvis-components.js";
26
+
27
+ process.on("SIGINT", () => onCancel());
28
+
29
+ async function bootstrap() {
30
+ if (fs.existsSync(path.join(CWD, "next.config.ts"))) {
31
+ context.isNewProject = false;
32
+ }
33
+
34
+ console.log(chalk.green.bold("\nWelcome to @tioelvis/next-template!"));
35
+ console.log(
36
+ chalk.white(
37
+ "Interactive CLI to scaffold a Next.js project with customizable presets and configurations.\n"
38
+ )
39
+ );
40
+
41
+ if (context.isNewProject === true) {
42
+ console.log(
43
+ chalk.blue.bold("Creating a new project with the following features:")
44
+ );
45
+ console.log("- Latest version of Next.js");
46
+ console.log("- TypeScript enabled");
47
+ console.log("- Latest version of Tailwind CSS");
48
+ console.log("- Project structure inside the `src/` directory");
49
+ console.log("- '@/' alias configured to import from `src`\n");
50
+
51
+ try {
52
+ const responses = await prompts(
53
+ [
54
+ {
55
+ type: "text",
56
+ name: "projectName",
57
+ message: "What is the name of your Next.js project?",
58
+ initial: "my-app",
59
+ },
60
+ {
61
+ type: "select",
62
+ name: "packageManager",
63
+ message: "Which package manager would you want to use?",
64
+ choices: [
65
+ { title: "npm", value: "npm" },
66
+ { title: "yarn", value: "yarn" },
67
+ { title: "pnpm", value: "pnpm" },
68
+ ],
69
+ },
70
+ {
71
+ type: "confirm",
72
+ name: "useShadcnUI",
73
+ message: "Would you like to include shadcn/ui components?",
74
+ initial: true,
75
+ },
76
+ {
77
+ type: (prev) => (prev ? "multiselect" : null),
78
+ name: "shadcnComponents",
79
+ message: "Which shadcn/ui components would you like to use?",
80
+ choices: SHADCN_COMPONENTS.map((e) => {
81
+ return { ...e };
82
+ }),
83
+ instructions: false,
84
+ },
85
+ {
86
+ type: "select",
87
+ name: "themeColor",
88
+ message: "Which theme color would you like to use?",
89
+ choices: THEME_COLORS.map((e) => {
90
+ return {
91
+ title: `${chalk.hex(e.hex)("●")} ${e.title}`,
92
+ value: e.value,
93
+ };
94
+ }),
95
+ },
96
+ {
97
+ type: "confirm",
98
+ name: "useTioElvisComponents",
99
+ message: "Would you like to include some TioElvis components?",
100
+ initial: true,
101
+ instructions: false,
102
+ },
103
+ {
104
+ type: (prev) => (prev ? "multiselect" : null),
105
+ name: "tioElvisComponents",
106
+ message: "Which TioElvis components would you like to use?",
107
+ choices: TIOELVIS_COMPONENTS.map((e) => {
108
+ return { ...e };
109
+ }),
110
+ instructions: false,
111
+ },
112
+ ],
113
+ { onCancel }
114
+ );
115
+
116
+ console.log(""); // New line for better readability
117
+
118
+ const {
119
+ projectName,
120
+ packageManager,
121
+ useShadcnUI,
122
+ shadcnComponents,
123
+ themeColor,
124
+ useTioElvisComponents,
125
+ tioElvisComponents,
126
+ } = responses;
127
+
128
+ context.dest = path.join(CWD, projectName);
129
+ context.projectName = projectName;
130
+ context.packageManager = packageManager;
131
+
132
+ initProject();
133
+ configurePackageJSON();
134
+ await installMainPackages();
135
+ if (useShadcnUI) {
136
+ await initShadcnUI(shadcnComponents);
137
+ }
138
+ initThemeColor(themeColor);
139
+ if (useTioElvisComponents) {
140
+ initTioElvisComponents(tioElvisComponents);
141
+ }
142
+
143
+ console.log(chalk.green.bold("\nProject setup complete!"));
144
+ } catch (error) {
145
+ console.error(chalk.red(error.message));
146
+
147
+ if (error instanceof Exception) {
148
+ if (context.dest && error.deleteDest && fs.existsSync(context.dest)) {
149
+ fs.rmSync(context.dest, { recursive: true, force: true });
150
+ }
151
+ }
152
+
153
+ process.exit(1);
154
+ }
155
+ }
156
+ }
157
+
158
+ bootstrap();
@@ -1,16 +1,18 @@
1
- import { dirname } from "path";
2
- import { fileURLToPath } from "url";
3
- import { FlatCompat } from "@eslint/eslintrc";
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import nextVitals from "eslint-config-next/core-web-vitals";
3
+ import nextTs from "eslint-config-next/typescript";
4
4
 
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = dirname(__filename);
7
-
8
- const compat = new FlatCompat({
9
- baseDirectory: __dirname,
10
- });
11
-
12
- const eslintConfig = [
13
- ...compat.extends("next/core-web-vitals", "next/typescript"),
14
- ];
5
+ const eslintConfig = defineConfig([
6
+ ...nextVitals,
7
+ ...nextTs,
8
+ // Override default ignores of eslint-config-next.
9
+ globalIgnores([
10
+ // Default ignores of eslint-config-next:
11
+ ".next/**",
12
+ "out/**",
13
+ "build/**",
14
+ "next-env.d.ts",
15
+ ]),
16
+ ]);
15
17
 
16
18
  export default eslintConfig;
@@ -1,5 +1,7 @@
1
1
  const config = {
2
- plugins: ["@tailwindcss/postcss"],
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ },
3
5
  };
4
6
 
5
7
  export default config;
@@ -1,123 +1 @@
1
1
  @import "tailwindcss";
2
- @import "tw-animate-css";
3
-
4
- @custom-variant dark (&:is(.dark *));
5
-
6
- @theme inline {
7
- --color-background: var(--background);
8
- --color-foreground: var(--foreground);
9
- --font-sans: var(--font-geist-sans);
10
- --font-mono: var(--font-geist-mono);
11
- --color-sidebar-ring: var(--sidebar-ring);
12
- --color-sidebar-border: var(--sidebar-border);
13
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
14
- --color-sidebar-accent: var(--sidebar-accent);
15
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
16
- --color-sidebar-primary: var(--sidebar-primary);
17
- --color-sidebar-foreground: var(--sidebar-foreground);
18
- --color-sidebar: var(--sidebar);
19
- --color-chart-5: var(--chart-5);
20
- --color-chart-4: var(--chart-4);
21
- --color-chart-3: var(--chart-3);
22
- --color-chart-2: var(--chart-2);
23
- --color-chart-1: var(--chart-1);
24
- --color-ring: var(--ring);
25
- --color-input: var(--input);
26
- --color-border: var(--border);
27
- --color-destructive: var(--destructive);
28
- --color-accent-foreground: var(--accent-foreground);
29
- --color-accent: var(--accent);
30
- --color-muted-foreground: var(--muted-foreground);
31
- --color-muted: var(--muted);
32
- --color-secondary-foreground: var(--secondary-foreground);
33
- --color-secondary: var(--secondary);
34
- --color-primary-foreground: var(--primary-foreground);
35
- --color-primary: var(--primary);
36
- --color-popover-foreground: var(--popover-foreground);
37
- --color-popover: var(--popover);
38
- --color-card-foreground: var(--card-foreground);
39
- --color-card: var(--card);
40
- --radius-sm: calc(var(--radius) - 4px);
41
- --radius-md: calc(var(--radius) - 2px);
42
- --radius-lg: var(--radius);
43
- --radius-xl: calc(var(--radius) + 4px);
44
- }
45
-
46
- :root {
47
- --radius: 0.65rem;
48
- --background: oklch(1 0 0);
49
- --foreground: oklch(0.145 0 0);
50
- --card: oklch(1 0 0);
51
- --card-foreground: oklch(0.145 0 0);
52
- --popover: oklch(1 0 0);
53
- --popover-foreground: oklch(0.145 0 0);
54
- --primary: oklch(0.205 0 0);
55
- --primary-foreground: oklch(0.985 0 0);
56
- --secondary: oklch(0.97 0 0);
57
- --secondary-foreground: oklch(0.205 0 0);
58
- --muted: oklch(0.97 0 0);
59
- --muted-foreground: oklch(0.556 0 0);
60
- --accent: oklch(0.97 0 0);
61
- --accent-foreground: oklch(0.205 0 0);
62
- --destructive: oklch(0.577 0.245 27.325);
63
- --border: oklch(0.922 0 0);
64
- --input: oklch(0.922 0 0);
65
- --ring: oklch(0.708 0 0);
66
- --chart-1: oklch(0.646 0.222 41.116);
67
- --chart-2: oklch(0.6 0.118 184.704);
68
- --chart-3: oklch(0.398 0.07 227.392);
69
- --chart-4: oklch(0.828 0.189 84.429);
70
- --chart-5: oklch(0.769 0.188 70.08);
71
- --radius: 0.625rem;
72
- --sidebar: oklch(0.985 0 0);
73
- --sidebar-foreground: oklch(0.145 0 0);
74
- --sidebar-primary: oklch(0.205 0 0);
75
- --sidebar-primary-foreground: oklch(0.985 0 0);
76
- --sidebar-accent: oklch(0.97 0 0);
77
- --sidebar-accent-foreground: oklch(0.205 0 0);
78
- --sidebar-border: oklch(0.922 0 0);
79
- --sidebar-ring: oklch(0.708 0 0);
80
- }
81
-
82
- .dark {
83
- --background: oklch(0.145 0 0);
84
- --foreground: oklch(0.985 0 0);
85
- --card: oklch(0.205 0 0);
86
- --card-foreground: oklch(0.985 0 0);
87
- --popover: oklch(0.205 0 0);
88
- --popover-foreground: oklch(0.985 0 0);
89
- --primary: oklch(0.922 0 0);
90
- --primary-foreground: oklch(0.205 0 0);
91
- --secondary: oklch(0.269 0 0);
92
- --secondary-foreground: oklch(0.985 0 0);
93
- --muted: oklch(0.269 0 0);
94
- --muted-foreground: oklch(0.708 0 0);
95
- --accent: oklch(0.269 0 0);
96
- --accent-foreground: oklch(0.985 0 0);
97
- --destructive: oklch(0.704 0.191 22.216);
98
- --border: oklch(1 0 0 / 10%);
99
- --input: oklch(1 0 0 / 15%);
100
- --ring: oklch(0.556 0 0);
101
- --chart-1: oklch(0.488 0.243 264.376);
102
- --chart-2: oklch(0.696 0.17 162.48);
103
- --chart-3: oklch(0.769 0.188 70.08);
104
- --chart-4: oklch(0.627 0.265 303.9);
105
- --chart-5: oklch(0.645 0.246 16.439);
106
- --sidebar: oklch(0.205 0 0);
107
- --sidebar-foreground: oklch(0.985 0 0);
108
- --sidebar-primary: oklch(0.488 0.243 264.376);
109
- --sidebar-primary-foreground: oklch(0.985 0 0);
110
- --sidebar-accent: oklch(0.269 0 0);
111
- --sidebar-accent-foreground: oklch(0.985 0 0);
112
- --sidebar-border: oklch(1 0 0 / 10%);
113
- --sidebar-ring: oklch(0.556 0 0);
114
- }
115
-
116
- @layer base {
117
- * {
118
- @apply border-border outline-ring/50;
119
- }
120
- body {
121
- @apply bg-background text-foreground;
122
- }
123
- }
@@ -1,16 +1,18 @@
1
1
  import "./globals.css";
2
2
  import type { Metadata } from "next";
3
3
  import { Roboto } from "next/font/google";
4
- import { QueryProvider } from "@/providers/query.provider";
5
- import { ThemeProvider } from "@/providers/theme.provider";
6
4
 
7
5
  const roboto = Roboto({
8
6
  subsets: ["latin"],
9
- weight: ["500", "600", "700", "800"],
7
+ weight: ["400", "500", "600", "700"],
8
+ variable: "--font-roboto",
10
9
  });
11
10
 
12
11
  export const metadata: Metadata = {
13
12
  title: "Untitled",
13
+ icons: {
14
+ icon: "/favicon.ico",
15
+ },
14
16
  };
15
17
 
16
18
  interface Props {
@@ -19,18 +21,8 @@ interface Props {
19
21
 
20
22
  export default function Layout({ children }: Readonly<Props>) {
21
23
  return (
22
- <html lang="en" suppressHydrationWarning>
23
- <body className={roboto.className}>
24
- <ThemeProvider
25
- attribute="class"
26
- defaultTheme="system"
27
- enableSystem
28
- disableTransitionOnChange>
29
- <QueryProvider>
30
- <main className="w-full min-h-[calc(100vh-4rem)]">{children}</main>
31
- </QueryProvider>
32
- </ThemeProvider>
33
- </body>
24
+ <html lang="en">
25
+ <body className={roboto.variable}>{children}</body>
34
26
  </html>
35
27
  );
36
28
  }
@@ -1,5 +1,9 @@
1
- import { Fragment } from "react";
1
+ import { Fragment } from "react/jsx-runtime";
2
2
 
3
3
  export default function Page() {
4
- return <Fragment>Hello world</Fragment>;
4
+ return (
5
+ <Fragment>
6
+ <h1 className="text-primary">Hello, THERE!</h1>
7
+ </Fragment>
8
+ );
5
9
  }
@@ -11,7 +11,7 @@
11
11
  "moduleResolution": "bundler",
12
12
  "resolveJsonModule": true,
13
13
  "isolatedModules": true,
14
- "jsx": "preserve",
14
+ "jsx": "react-jsx",
15
15
  "incremental": true,
16
16
  "plugins": [
17
17
  {
@@ -22,6 +22,13 @@
22
22
  "@/*": ["./src/*"]
23
23
  }
24
24
  },
25
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
25
+ "include": [
26
+ "next-env.d.ts",
27
+ "**/*.ts",
28
+ "**/*.tsx",
29
+ ".next/types/**/*.ts",
30
+ ".next/dev/types/**/*.ts",
31
+ "**/*.mts"
32
+ ],
26
33
  "exclude": ["node_modules"]
27
34
  }