nextjs-starter-kit 0.1.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 (67) hide show
  1. package/.github/PR_REQUEST_TEMPLATE.md +18 -0
  2. package/.github/workflows/pr_check.yml +38 -0
  3. package/.husky/pre-commit +1 -0
  4. package/.prettierignore +7 -0
  5. package/.prettierrc +9 -0
  6. package/README.md +165 -0
  7. package/components.json +21 -0
  8. package/eslint.config.mjs +42 -0
  9. package/jsconfig.json +7 -0
  10. package/lint-staged.config.js +6 -0
  11. package/next.config.mjs +6 -0
  12. package/package.json +72 -0
  13. package/postcss.config.mjs +5 -0
  14. package/src/animations/loader.js +81 -0
  15. package/src/app/(routes)/(home)/page.jsx +7 -0
  16. package/src/app/favicon.ico +0 -0
  17. package/src/app/layout.js +81 -0
  18. package/src/app/not-found.jsx +19 -0
  19. package/src/app/robots.js +10 -0
  20. package/src/app/sitemap.js +10 -0
  21. package/src/assets/Logos/index.js +3 -0
  22. package/src/assets/index.js +5 -0
  23. package/src/components/ui/accordion.jsx +53 -0
  24. package/src/components/ui/alert-dialog.jsx +136 -0
  25. package/src/components/ui/alert.jsx +59 -0
  26. package/src/components/ui/avatar.jsx +44 -0
  27. package/src/components/ui/badge.jsx +40 -0
  28. package/src/components/ui/breadcrumb.jsx +96 -0
  29. package/src/components/ui/button.jsx +49 -0
  30. package/src/components/ui/calendar.jsx +221 -0
  31. package/src/components/ui/card.jsx +92 -0
  32. package/src/components/ui/carousel.jsx +217 -0
  33. package/src/components/ui/chart.jsx +332 -0
  34. package/src/components/ui/checkbox.jsx +29 -0
  35. package/src/components/ui/collapsible.jsx +27 -0
  36. package/src/components/ui/command.jsx +156 -0
  37. package/src/components/ui/container.jsx +18 -0
  38. package/src/components/ui/dialog.jsx +127 -0
  39. package/src/components/ui/drawer.jsx +114 -0
  40. package/src/components/ui/dropdown-menu.jsx +210 -0
  41. package/src/components/ui/form.jsx +140 -0
  42. package/src/components/ui/headings.jsx +34 -0
  43. package/src/components/ui/image.jsx +21 -0
  44. package/src/components/ui/input-otp.jsx +66 -0
  45. package/src/components/ui/input.jsx +21 -0
  46. package/src/components/ui/label.jsx +21 -0
  47. package/src/components/ui/pagination.jsx +105 -0
  48. package/src/components/ui/popover.jsx +42 -0
  49. package/src/components/ui/progress.jsx +27 -0
  50. package/src/components/ui/select.jsx +157 -0
  51. package/src/components/ui/separator.jsx +28 -0
  52. package/src/components/ui/sheet.jsx +117 -0
  53. package/src/components/ui/skeleton.jsx +13 -0
  54. package/src/components/ui/slider.jsx +63 -0
  55. package/src/components/ui/sonner.jsx +23 -0
  56. package/src/components/ui/switch.jsx +28 -0
  57. package/src/components/ui/table.jsx +113 -0
  58. package/src/components/ui/tabs.jsx +54 -0
  59. package/src/components/ui/textarea.jsx +18 -0
  60. package/src/components/ui/tooltip.jsx +49 -0
  61. package/src/lib/axios.js +8 -0
  62. package/src/lib/queryClient.js +11 -0
  63. package/src/lib/utils.js +6 -0
  64. package/src/providers/QueryProvider.jsx +15 -0
  65. package/src/shared/icons.js +308 -0
  66. package/src/styles/fonts.js +30 -0
  67. package/src/styles/globals.css +124 -0
@@ -0,0 +1,18 @@
1
+ ## πŸ“Œ What’s changing?
2
+
3
+ <!-- Briefly explain what this PR does -->
4
+
5
+ ## βœ… Checklist
6
+
7
+ - [ ] I tested this change locally
8
+ - [ ] I updated related docs (if needed)
9
+ - [ ] This PR is rebased on the latest base branch
10
+ - [ ] This PR is ready to squash & merge
11
+
12
+ ## πŸš€ Deployment notes
13
+
14
+ <!-- Optional: Add notes if anything special is needed during deploy -->
15
+
16
+ ## 🎯 Related Issues or Cards
17
+
18
+ Closes #
@@ -0,0 +1,38 @@
1
+ name: PR Check
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - development
7
+ - testing
8
+ - production
9
+
10
+ jobs:
11
+ lint-and-build:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Use Node
19
+ uses: actions/setup-node@v4
20
+ with:
21
+ node-version: 20
22
+
23
+ - name: Enable Corepack & Install
24
+ run: |
25
+ corepack enable
26
+ pnpm install
27
+
28
+ - name: Lint
29
+ run: pnpm lint
30
+
31
+ - name: Format Check
32
+ run: pnpm format-check
33
+
34
+ - name: Format
35
+ run: pnpm format
36
+
37
+ - name: Build
38
+ run: pnpm build
@@ -0,0 +1 @@
1
+ pnpm lint-staged
@@ -0,0 +1,7 @@
1
+ /.vscode
2
+ /node_modules
3
+ ./dist
4
+
5
+ *.env
6
+ .env
7
+ .env.*
package/.prettierrc ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "singleQuote": false,
3
+ "bracketSpacing": true,
4
+ "tabWidth": 4,
5
+ "semi": true,
6
+ "trailingComma": "es5",
7
+ "plugins": ["prettier-plugin-tailwindcss"],
8
+ "tailwindFunctions": ["clsx", "cva", "cn"]
9
+ }
package/README.md ADDED
@@ -0,0 +1,165 @@
1
+ # Next.js Starter
2
+
3
+ [![Next.js](https://img.shields.io/badge/Next.js-16%2B-blue?logo=next.js)](https://nextjs.org/)
4
+ [![pnpm](https://img.shields.io/badge/pnpm-%E2%9C%94-green?logo=pnpm)](https://pnpm.io/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
+ [![Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?logo=prettier)](https://prettier.io/)
7
+ [![ESLint](https://img.shields.io/badge/linting-eslint-blue?logo=eslint)](https://eslint.org/)
8
+
9
+ > A modern Next.js starter template with modular structure, reusable UI components, and best practices for scalable web development.
10
+
11
+ ---
12
+
13
+ ## Features
14
+
15
+ - **Next.js 15.5.0** with App Router
16
+ - Modular folder structure (`src/animations`, `src/assets`, `src/components`, etc.)
17
+ - Reusable UI components (Accordion, Button, Card, Table, etc.)
18
+ - Context, hooks, and helpers for state management and utilities
19
+ - Axios setup for API requests
20
+ - QueryClient for data fetching and caching
21
+ - Global styles and custom fonts
22
+ - Linting and formatting with ESLint, Prettier, and lint-staged
23
+ - PostCSS for advanced CSS processing
24
+ - Husky for Git hooks
25
+ - Tailwind CSS for utility-first styling
26
+ - Prettier and Prettier-plugin-tailwindcss for code formatting
27
+ - Embla Carousel, Recharts, Lucide, Tabler Icons, and more for UI/UX enhancements
28
+ - Zod for schema validation
29
+ - React Query for data fetching
30
+
31
+ ---
32
+
33
+ ## Getting Started
34
+
35
+ ### Prerequisites
36
+
37
+ - Node.js 22+
38
+ - pnpm (recommended) or npm/yarn
39
+
40
+ ### Installation
41
+
42
+ ```bash
43
+ pnpm install
44
+ ```
45
+
46
+ ### Running the Development Server
47
+
48
+ ```bash
49
+ pnpm dev
50
+ ```
51
+
52
+ Open [http://localhost:3000](http://localhost:3000) in your browser.
53
+
54
+ ### Building for Production
55
+
56
+ ```bash
57
+ pnpm build
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Project Structure
63
+
64
+ ```text
65
+ src/
66
+ animations/ # Animation utilities
67
+ app/ # Next.js app router structure
68
+ (routes)/ # Route groups
69
+ (home)/ # Home page
70
+ assets/ # Static assets and logos
71
+ components/ # UI components, constants, context, helpers, hooks, lib, providers, schema, shared, styles, utils, validations
72
+ ui/ # Reusable UI elements
73
+ constants/ # App-wide constants
74
+ context/ # React context providers
75
+ helpers/ # Utility functions
76
+ hooks/ # Custom React hooks
77
+ lib/ # Libraries (axios, queryClient, utils)
78
+ providers/ # Context providers
79
+ schema/ # Validation schemas
80
+ shared/ # Shared resources (icons, etc.)
81
+ styles/ # Fonts and global styles
82
+ utils/ # Utility functions
83
+ validations/ # Validation logic
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Scripts
89
+
90
+ - `pnpm dev` β€” Start development server
91
+ - `pnpm build` β€” Run lint, format, and build for production
92
+ - `pnpm lint` β€” Run ESLint
93
+ - `pnpm format` β€” Format code with Prettier
94
+ - `pnpm check-format` β€” Check code formatting
95
+ - `pnpm prepare` β€” Prepare Husky hooks
96
+ - `pnpm start` β€” Start production server
97
+
98
+ ---
99
+
100
+ ## Dependencies
101
+
102
+ ### Main
103
+
104
+ - next@15.5.0
105
+ - react@19.1.0, react-dom@19.1.0
106
+ - axios
107
+ - @tanstack/react-query, @tanstack/react-query-devtools
108
+ - @radix-ui/react-\* (Accordion, Dialog, Tabs, etc.)
109
+ - @tabler/icons-react, lucide-react
110
+ - embla-carousel-react
111
+ - recharts
112
+ - zod
113
+ - input-otp
114
+ - sonner
115
+ - tailwind-merge
116
+ - next-themes
117
+ - date-fns
118
+ - class-variance-authority, clsx
119
+ - vaul
120
+
121
+ ### Dev
122
+
123
+ - eslint, eslint-config-next, eslint-config-prettier, eslint-plugin-react-hooks, @tanstack/eslint-plugin-query, @eslint/eslintrc
124
+ - prettier, prettier-plugin-tailwindcss
125
+ - husky
126
+ - lint-staged
127
+ - tailwindcss, @tailwindcss/postcss, tw-animate-css
128
+
129
+ ---
130
+
131
+ ## Linting & Formatting
132
+
133
+ - ESLint config: `eslint.config.mjs`
134
+ - Prettier: integrated via lint-staged
135
+ - Lint-staged: `lint-staged.config.js`
136
+ - Husky for pre-commit hooks
137
+
138
+ ---
139
+
140
+ ## Customization
141
+
142
+ - Add new UI components in `src/components/ui/`
143
+ - Add new routes in `src/app/(routes)/`
144
+ - Update global styles in `src/components/styles/globals.css`
145
+ - Configure Axios in `src/components/lib/axios.js`
146
+ - Add/modify validation schemas in `src/components/schema/`
147
+
148
+ ---
149
+
150
+ ## Author
151
+
152
+ **Harshit Ostwal**
153
+ [codewithharshitjain@gmail.com](mailto:codewithharshitjain@gmail.com)
154
+
155
+ ---
156
+
157
+ ## License
158
+
159
+ This project is licensed under the MIT License.
160
+
161
+ ---
162
+
163
+ ## Contributing
164
+
165
+ Pull requests, issues, and suggestions are welcome!
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": true,
5
+ "tsx": false,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "@/styles/globals.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/lib/utils",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/lib",
18
+ "hooks": "@/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
@@ -0,0 +1,42 @@
1
+ import { dirname } from "path";
2
+ import { fileURLToPath } from "url";
3
+ import { FlatCompat } from "@eslint/eslintrc";
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
+ {
14
+ ignores: [
15
+ "node_modules/**",
16
+ ".next/**",
17
+ "out/**",
18
+ "build/**",
19
+ "next-env.d.ts",
20
+ ],
21
+ },
22
+ ...compat.extends("next/core-web-vitals", "prettier"),
23
+ {
24
+ files: ["**/*.{js,jsx}"],
25
+ languageOptions: {
26
+ parserOptions: {
27
+ ecmaVersion: 2022,
28
+ sourceType: "module",
29
+ },
30
+ },
31
+ rules: {
32
+ "no-unused-vars": "warn",
33
+ "no-console": "warn",
34
+ "@next/next/no-document-import-in-page": "off",
35
+ "react-hooks/rules-of-hooks": "error",
36
+ "react-hooks/exhaustive-deps": "warn",
37
+ "@typescript-eslint/no-unused-vars": "off",
38
+ },
39
+ },
40
+ ];
41
+
42
+ export default eslintConfig;
package/jsconfig.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "compilerOptions": {
3
+ "paths": {
4
+ "@/*": ["./src/*"]
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,6 @@
1
+ const config = {
2
+ "**/*.{js,jsx}": ["eslint --fix", "prettier --write"],
3
+ "**/*.{css,scss,md,json}": ["prettier --write"],
4
+ };
5
+
6
+ export default config;
@@ -0,0 +1,6 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ devIndicators: false,
4
+ };
5
+
6
+ export default nextConfig;
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "nextjs-starter-kit",
3
+ "version": "0.1.1",
4
+ "private": false,
5
+ "scripts": {
6
+ "dev": "next dev --turbopack",
7
+ "build": "pnpm lint && pnpm format && next build --turbopack",
8
+ "start": "next start",
9
+ "lint": "eslint",
10
+ "check-format": "prettier --check .",
11
+ "format": "prettier --write .",
12
+ "prepare": "husky"
13
+ },
14
+ "dependencies": {
15
+ "@hookform/resolvers": "^5.2.1",
16
+ "@next/third-parties": "^15.5.0",
17
+ "@radix-ui/react-accordion": "^1.2.12",
18
+ "@radix-ui/react-alert-dialog": "^1.1.15",
19
+ "@radix-ui/react-avatar": "^1.1.10",
20
+ "@radix-ui/react-checkbox": "^1.3.3",
21
+ "@radix-ui/react-collapsible": "^1.1.12",
22
+ "@radix-ui/react-dialog": "^1.1.15",
23
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
24
+ "@radix-ui/react-label": "^2.1.7",
25
+ "@radix-ui/react-popover": "^1.1.15",
26
+ "@radix-ui/react-progress": "^1.1.7",
27
+ "@radix-ui/react-select": "^2.2.6",
28
+ "@radix-ui/react-separator": "^1.1.7",
29
+ "@radix-ui/react-slider": "^1.3.6",
30
+ "@radix-ui/react-slot": "^1.2.3",
31
+ "@radix-ui/react-switch": "^1.2.6",
32
+ "@radix-ui/react-tabs": "^1.1.13",
33
+ "@radix-ui/react-tooltip": "^1.2.8",
34
+ "@tabler/icons-react": "^3.34.1",
35
+ "@tanstack/react-query": "^5.85.5",
36
+ "@tanstack/react-query-devtools": "^5.85.5",
37
+ "axios": "^1.11.0",
38
+ "class-variance-authority": "^0.7.1",
39
+ "clsx": "^2.1.1",
40
+ "cmdk": "^1.1.1",
41
+ "date-fns": "^4.1.0",
42
+ "embla-carousel-react": "^8.6.0",
43
+ "input-otp": "^1.4.2",
44
+ "lucide-react": "^0.541.0",
45
+ "next": "15.5.0",
46
+ "next-themes": "^0.4.6",
47
+ "react": "19.1.0",
48
+ "react-day-picker": "^9.9.0",
49
+ "react-dom": "19.1.0",
50
+ "react-hook-form": "^7.62.0",
51
+ "recharts": "2.15.4",
52
+ "sonner": "^2.0.7",
53
+ "tailwind-merge": "^3.3.1",
54
+ "vaul": "^1.1.2",
55
+ "zod": "^4.0.17"
56
+ },
57
+ "devDependencies": {
58
+ "@eslint/eslintrc": "^3",
59
+ "@tailwindcss/postcss": "^0.6.14",
60
+ "@tanstack/eslint-plugin-query": "^5.83.1",
61
+ "eslint": "^9",
62
+ "eslint-config-next": "15.5.0",
63
+ "eslint-config-prettier": "^10.1.8",
64
+ "eslint-plugin-react-hooks": "^5.2.0",
65
+ "husky": "^9.1.7",
66
+ "lint-staged": "^16.1.5",
67
+ "prettier": "^3.6.2",
68
+ "prettier-plugin-tailwindcss": "^0.6.14",
69
+ "tailwindcss": "^4",
70
+ "tw-animate-css": "^1.3.7"
71
+ }
72
+ }
@@ -0,0 +1,5 @@
1
+ const config = {
2
+ plugins: ["@tailwindcss/postcss"],
3
+ };
4
+
5
+ export default config;
@@ -0,0 +1,81 @@
1
+ import gsap from "gsap";
2
+
3
+ export function LoaderAnimation() {
4
+ const tl = gsap.timeline();
5
+
6
+ tl.set("#loader", {
7
+ "--gradient-opacity": 0,
8
+ background: `linear-gradient(to right,
9
+ rgba(243, 24, 17, var(--gradient-opacity, 0)),
10
+ rgba(250, 240, 48, var(--gradient-opacity, 0)),
11
+ rgba(255, 255, 255, var(--gradient-opacity, 0)),
12
+ rgba(6, 144, 36, var(--gradient-opacity, 0)),
13
+ rgba(15, 45, 202, var(--gradient-opacity, 0))
14
+ ), black`,
15
+ });
16
+
17
+ tl.fromTo(
18
+ "#loader-heading",
19
+ {
20
+ visibility: "hidden",
21
+ },
22
+ {
23
+ visibility: "visible",
24
+ display: "flex",
25
+ }
26
+ );
27
+
28
+ tl.fromTo(
29
+ "#loader-heading span",
30
+ {
31
+ y: -25,
32
+ opacity: 0,
33
+ },
34
+ {
35
+ opacity: 1,
36
+ stagger: 0.12,
37
+ duration: 1,
38
+ delay: 0.5,
39
+ y: 0,
40
+ }
41
+ );
42
+
43
+ tl.to("#loader-heading span", {
44
+ y: -25,
45
+ stagger: 0.12,
46
+ duration: 1,
47
+ opacity: 0,
48
+ });
49
+
50
+ tl.set("#loader", {
51
+ background: `linear-gradient(to right,
52
+ rgba(243, 24, 17, var(--gradient-opacity, 0)),
53
+ rgba(250, 240, 48, var(--gradient-opacity, 0)),
54
+ rgba(255, 255, 255, var(--gradient-opacity, 0)),
55
+ rgba(6, 144, 36, var(--gradient-opacity, 0)),
56
+ rgba(15, 45, 202, var(--gradient-opacity, 0))
57
+ ), white`,
58
+ "--gradient-opacity": 1,
59
+ duration: 0.5,
60
+ });
61
+
62
+ tl.fromTo(
63
+ "#logo",
64
+ {
65
+ visibility: "hidden",
66
+ scale: 1.05,
67
+ filter: "blur(10px)",
68
+ opacity: 0,
69
+ },
70
+ {
71
+ visibility: "visible",
72
+ display: "flex",
73
+ scale: 1,
74
+ opacity: 1,
75
+ duration: 0.5,
76
+ filter: "blur(0px)",
77
+ }
78
+ );
79
+
80
+ return tl;
81
+ }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+
3
+ function page() {
4
+ return <div>page</div>;
5
+ }
6
+
7
+ export default page;
Binary file
@@ -0,0 +1,81 @@
1
+ import { Toaster } from "@/components/ui/sonner";
2
+ import { cn } from "@/lib/utils";
3
+ import { QueryProvider } from "@/providers/QueryProvider";
4
+ import { manrope, figtree, inter } from "@/styles/fonts";
5
+ import "@/styles/globals.css";
6
+ import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google";
7
+
8
+ // export const metadata = {
9
+ // title: {
10
+ // default: "Next JS Starter",
11
+ // template: "%s | Next JS Starter",
12
+ // },
13
+ // description: "",
14
+ // keywords: [],
15
+ // metadataBase: new URL(""),
16
+ // alternates: {
17
+ // canonical: "0",
18
+ // },
19
+ // openGraph: {
20
+ // title: "",
21
+ // description: "",
22
+ // url: "0",
23
+ // siteName: "0",
24
+ // locale: "en_US",
25
+ // type: "website",
26
+ // images: [
27
+ // {
28
+ // url: "0",
29
+ // width: 0,
30
+ // height: 0,
31
+ // alt: "",
32
+ // },
33
+ // ],
34
+ // },
35
+ // twitter: {
36
+ // card: "",
37
+ // title: "",
38
+ // description: "",
39
+ // images: [
40
+ // {
41
+ // url: "",
42
+ // width: 0,
43
+ // height: 0,
44
+ // alt: "",
45
+ // },
46
+ // ],
47
+ // },
48
+ // icons: {
49
+ // icon: "/favicon.ico",
50
+ // apple: "/favicon.ico",
51
+ // },
52
+ // };
53
+
54
+ export default function RootLayout({ children }) {
55
+ return (
56
+ <html lang="en" suppressHydrationWarning>
57
+ <GoogleTagManager gtmId="" />
58
+ <GoogleAnalytics gaId="" />
59
+
60
+ <body
61
+ className={cn(
62
+ manrope.variable,
63
+ figtree.variable,
64
+ inter.variable,
65
+ "font-Manrope tracking-tighter antialiased"
66
+ )}
67
+ >
68
+ <QueryProvider>{children}</QueryProvider>
69
+ <Toaster
70
+ richColors
71
+ theme="light"
72
+ closeButton
73
+ expand
74
+ position="top-right"
75
+ dir="auto"
76
+ gap={20}
77
+ />
78
+ </body>
79
+ </html>
80
+ );
81
+ }
@@ -0,0 +1,19 @@
1
+ import { Button } from "@/components/ui/button";
2
+ import Container from "@/components/ui/container";
3
+ import { Heading } from "@/components/ui/headings";
4
+ import Link from "next/link";
5
+
6
+ export default function NotFound() {
7
+ return (
8
+ <Container
9
+ className={
10
+ "flex h-screen flex-col items-center justify-center gap-4"
11
+ }
12
+ >
13
+ <Heading size="h4">404 - Page Not Found</Heading>
14
+ <Link href={"/"}>
15
+ <Button>Go Back</Button>
16
+ </Link>
17
+ </Container>
18
+ );
19
+ }
@@ -0,0 +1,10 @@
1
+ export default function robots() {
2
+ return {
3
+ rules: {
4
+ userAgent: "*",
5
+ allow: "/",
6
+ disallow: ["/private/", "/api/", "/admin/", "/_next/"],
7
+ },
8
+ sitemap: "",
9
+ };
10
+ }
@@ -0,0 +1,10 @@
1
+ export default async function sitemap() {
2
+ return [
3
+ {
4
+ url: "/example",
5
+ lastModified: new Date().toISOString(),
6
+ changeFrequency: "monthly",
7
+ priority: 0.5,
8
+ },
9
+ ];
10
+ }
@@ -0,0 +1,3 @@
1
+ export const Logos = {
2
+ alt: "",
3
+ };
@@ -0,0 +1,5 @@
1
+ import { Logos } from "./Logos";
2
+
3
+ export const Assets = {
4
+ logos: Logos,
5
+ };