@buley/hexgrid-3d 1.1.0 → 1.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.
@@ -0,0 +1,148 @@
1
+ import Link from 'next/link';
2
+
3
+ export const metadata = {
4
+ title: 'Documentation - HexGrid 3D',
5
+ description: 'Complete documentation for HexGrid 3D component',
6
+ };
7
+
8
+ export default function DocsPage() {
9
+ return (
10
+ <div className="container" style={{ paddingTop: '4rem', paddingBottom: '4rem' }}>
11
+ <Link href="/" style={{ color: '#667eea', marginBottom: '2rem', display: 'inline-block' }}>
12
+ ← Back to Home
13
+ </Link>
14
+
15
+ <h1 style={{ fontSize: '3rem', marginBottom: '1rem' }}>Documentation</h1>
16
+ <p style={{ color: '#a0a0a0', marginBottom: '3rem', fontSize: '1.2rem' }}>
17
+ Complete guide to using HexGrid 3D in your projects
18
+ </p>
19
+
20
+ <div style={{ display: 'grid', gap: '2rem' }}>
21
+ <section>
22
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Installation</h2>
23
+ <div className="code-block">
24
+ <code>npm install @buley/hexgrid-3d</code>
25
+ </div>
26
+ </section>
27
+
28
+ <section>
29
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Basic Usage</h2>
30
+ <div className="code-block">
31
+ <code>
32
+ {`import { HexGrid, Photo } from '@buley/hexgrid-3d'
33
+
34
+ function MyComponent() {
35
+ const photos: Photo[] = [
36
+ {
37
+ id: '1',
38
+ url: 'https://example.com/photo.jpg',
39
+ source: 'example',
40
+ createdAt: new Date().toISOString()
41
+ }
42
+ ]
43
+
44
+ return (
45
+ <HexGrid
46
+ photos={photos}
47
+ onHexClick={(photo) => console.log('Clicked:', photo)}
48
+ />
49
+ )
50
+ }`}
51
+ </code>
52
+ </div>
53
+ </section>
54
+
55
+ <section>
56
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Props</h2>
57
+ <div style={{ background: '#1a1a1a', padding: '1.5rem', borderRadius: '8px', border: '1px solid #2a2a2a' }}>
58
+ <table style={{ width: '100%', borderCollapse: 'collapse' }}>
59
+ <thead>
60
+ <tr style={{ borderBottom: '1px solid #2a2a2a' }}>
61
+ <th style={{ padding: '0.75rem', textAlign: 'left', color: '#fff' }}>Prop</th>
62
+ <th style={{ padding: '0.75rem', textAlign: 'left', color: '#fff' }}>Type</th>
63
+ <th style={{ padding: '0.75rem', textAlign: 'left', color: '#fff' }}>Description</th>
64
+ </tr>
65
+ </thead>
66
+ <tbody>
67
+ <tr style={{ borderBottom: '1px solid #2a2a2a' }}>
68
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>photos</code></td>
69
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>Photo[]</code></td>
70
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}>Array of photos to display</td>
71
+ </tr>
72
+ <tr style={{ borderBottom: '1px solid #2a2a2a' }}>
73
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>onHexClick</code></td>
74
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>(photo: Photo) =&gt; void</code></td>
75
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}>Callback when hex is clicked</td>
76
+ </tr>
77
+ <tr style={{ borderBottom: '1px solid #2a2a2a' }}>
78
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>spacing</code></td>
79
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>number</code></td>
80
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}>Grid spacing multiplier</td>
81
+ </tr>
82
+ <tr>
83
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>canvasRef</code></td>
84
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}><code>RefObject</code></td>
85
+ <td style={{ padding: '0.75rem', color: '#a0a0a0' }}>Optional canvas reference</td>
86
+ </tr>
87
+ </tbody>
88
+ </table>
89
+ </div>
90
+ </section>
91
+
92
+ <section>
93
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Camera Controls</h2>
94
+ <div style={{ background: '#1a1a1a', padding: '1.5rem', borderRadius: '8px', border: '1px solid #2a2a2a' }}>
95
+ <h3 style={{ marginBottom: '1rem', color: '#fff' }}>Mouse/Trackpad</h3>
96
+ <ul style={{ color: '#a0a0a0', lineHeight: '1.8', marginLeft: '1.5rem' }}>
97
+ <li>Left Click + Drag - Rotate camera (yaw and pitch)</li>
98
+ <li>Scroll - Zoom in/out</li>
99
+ <li>Click on Hex - Select photo</li>
100
+ </ul>
101
+
102
+ <h3 style={{ marginTop: '2rem', marginBottom: '1rem', color: '#fff' }}>Touch</h3>
103
+ <ul style={{ color: '#a0a0a0', lineHeight: '1.8', marginLeft: '1.5rem' }}>
104
+ <li>Single Touch Drag - Rotate camera</li>
105
+ <li>Pinch - Zoom in/out</li>
106
+ <li>Tap on Hex - Select photo</li>
107
+ </ul>
108
+
109
+ <h3 style={{ marginTop: '2rem', marginBottom: '1rem', color: '#fff' }}>Keyboard</h3>
110
+ <ul style={{ color: '#a0a0a0', lineHeight: '1.8', marginLeft: '1.5rem' }}>
111
+ <li>D - Toggle debug panel</li>
112
+ <li>Escape - Close debug panel</li>
113
+ </ul>
114
+ </div>
115
+ </section>
116
+
117
+ <section>
118
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Performance</h2>
119
+ <p style={{ color: '#a0a0a0', lineHeight: '1.8', marginBottom: '1rem' }}>
120
+ HexGrid 3D uses Web Workers for heavy calculations to maintain 60fps rendering:
121
+ </p>
122
+ <ul style={{ color: '#a0a0a0', lineHeight: '1.8', marginLeft: '1.5rem' }}>
123
+ <li>Streaming Rendering - Progressively renders tiles</li>
124
+ <li>Texture Caching - Reuses loaded images</li>
125
+ <li>Adaptive Quality - Adjusts detail based on performance</li>
126
+ <li>Low-Res Mode - Optional reduced quality for slower devices</li>
127
+ </ul>
128
+ </section>
129
+
130
+ <section>
131
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>More Information</h2>
132
+ <p style={{ color: '#a0a0a0', lineHeight: '1.8' }}>
133
+ For complete API documentation, examples, and advanced usage, see the{' '}
134
+ <a
135
+ href="https://github.com/buley/hexgrid-3d"
136
+ target="_blank"
137
+ rel="noopener noreferrer"
138
+ style={{ color: '#667eea' }}
139
+ >
140
+ GitHub repository
141
+ </a>
142
+ .
143
+ </p>
144
+ </section>
145
+ </div>
146
+ </div>
147
+ );
148
+ }
@@ -0,0 +1,133 @@
1
+ import Link from 'next/link';
2
+
3
+ export const metadata = {
4
+ title: 'Examples - HexGrid 3D',
5
+ description: 'Example implementations of HexGrid 3D',
6
+ };
7
+
8
+ export default function ExamplesPage() {
9
+ return (
10
+ <div className="container" style={{ paddingTop: '4rem', paddingBottom: '4rem' }}>
11
+ <Link href="/" style={{ color: '#667eea', marginBottom: '2rem', display: 'inline-block' }}>
12
+ ← Back to Home
13
+ </Link>
14
+
15
+ <h1 style={{ fontSize: '3rem', marginBottom: '1rem' }}>Examples</h1>
16
+ <p style={{ color: '#a0a0a0', marginBottom: '3rem', fontSize: '1.2rem' }}>
17
+ See HexGrid 3D in action with these example implementations
18
+ </p>
19
+
20
+ <div style={{ display: 'grid', gap: '2rem' }}>
21
+ <section>
22
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Basic Example</h2>
23
+ <div className="code-block">
24
+ <code>
25
+ {`import { HexGrid, Photo } from '@buley/hexgrid-3d'
26
+
27
+ function BasicExample() {
28
+ const photos: Photo[] = [
29
+ {
30
+ id: '1',
31
+ url: 'https://example.com/photo1.jpg',
32
+ source: 'example',
33
+ createdAt: new Date().toISOString()
34
+ },
35
+ {
36
+ id: '2',
37
+ url: 'https://example.com/photo2.jpg',
38
+ source: 'example',
39
+ createdAt: new Date().toISOString()
40
+ }
41
+ ]
42
+
43
+ return (
44
+ <HexGrid
45
+ photos={photos}
46
+ onHexClick={(photo) => {
47
+ console.log('Selected photo:', photo)
48
+ }}
49
+ />
50
+ )
51
+ }`}
52
+ </code>
53
+ </div>
54
+ </section>
55
+
56
+ <section>
57
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>Advanced Example with Controls</h2>
58
+ <div className="code-block">
59
+ <code>
60
+ {`import { HexGrid, Photo, uiStore } from '@buley/hexgrid-3d'
61
+ import { useRef, useState } from 'react'
62
+
63
+ function AdvancedExample() {
64
+ const canvasRef = useRef<HTMLCanvasElement>(null)
65
+ const [modalOpen, setModalOpen] = useState(false)
66
+
67
+ return (
68
+ <div>
69
+ {/* Control buttons */}
70
+ <button onClick={() => uiStore.toggleDebug()}>
71
+ Toggle Debug
72
+ </button>
73
+ <button onClick={() => uiStore.toggleCamera()}>
74
+ Camera Controls
75
+ </button>
76
+
77
+ {/* Visualization */}
78
+ <HexGrid
79
+ photos={photos}
80
+ canvasRef={canvasRef}
81
+ spacing={1.2}
82
+ modalOpen={modalOpen}
83
+ onHexClick={(photo) => setModalOpen(true)}
84
+ autoplayQueueLimit={100}
85
+ />
86
+ </div>
87
+ )
88
+ }`}
89
+ </code>
90
+ </div>
91
+ </section>
92
+
93
+ <section>
94
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>With Custom Theming</h2>
95
+ <div className="code-block">
96
+ <code>
97
+ {`import { HexGrid, Photo } from '@buley/hexgrid-3d'
98
+ import { setCustomAccentColor } from '@/lib/theme-colors'
99
+
100
+ function ThemedExample() {
101
+ // Set custom accent color
102
+ setCustomAccentColor('#ff00ff')
103
+
104
+ return (
105
+ <HexGrid
106
+ photos={photos}
107
+ onHexClick={(photo) => console.log('Clicked:', photo)}
108
+ />
109
+ )
110
+ }`}
111
+ </code>
112
+ </div>
113
+ </section>
114
+
115
+ <section>
116
+ <h2 style={{ fontSize: '2rem', marginBottom: '1rem' }}>More Examples</h2>
117
+ <p style={{ color: '#a0a0a0', lineHeight: '1.8' }}>
118
+ For more examples and use cases, check out the{' '}
119
+ <a
120
+ href="https://github.com/buley/hexgrid-3d/tree/main/examples"
121
+ target="_blank"
122
+ rel="noopener noreferrer"
123
+ style={{ color: '#667eea' }}
124
+ >
125
+ examples directory
126
+ </a>
127
+ {' '}in the GitHub repository.
128
+ </p>
129
+ </section>
130
+ </div>
131
+ </div>
132
+ );
133
+ }
@@ -0,0 +1,160 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ padding: 0;
4
+ margin: 0;
5
+ }
6
+
7
+ html,
8
+ body {
9
+ max-width: 100vw;
10
+ overflow-x: hidden;
11
+ background: #000;
12
+ color: #fff;
13
+ }
14
+
15
+ body {
16
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
17
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
18
+ sans-serif;
19
+ -webkit-font-smoothing: antialiased;
20
+ -moz-osx-font-smoothing: grayscale;
21
+ }
22
+
23
+ a {
24
+ color: inherit;
25
+ text-decoration: none;
26
+ }
27
+
28
+ .container {
29
+ max-width: 1200px;
30
+ margin: 0 auto;
31
+ padding: 0 2rem;
32
+ }
33
+
34
+ .section {
35
+ padding: 4rem 0;
36
+ }
37
+
38
+ .hero {
39
+ min-height: 100vh;
40
+ display: flex;
41
+ flex-direction: column;
42
+ align-items: center;
43
+ justify-content: center;
44
+ text-align: center;
45
+ padding: 2rem;
46
+ }
47
+
48
+ .hero h1 {
49
+ font-size: 4rem;
50
+ font-weight: 700;
51
+ margin-bottom: 1rem;
52
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
53
+ -webkit-background-clip: text;
54
+ -webkit-text-fill-color: transparent;
55
+ background-clip: text;
56
+ }
57
+
58
+ .hero p {
59
+ font-size: 1.5rem;
60
+ margin-bottom: 2rem;
61
+ color: #a0a0a0;
62
+ max-width: 800px;
63
+ }
64
+
65
+ .button {
66
+ display: inline-block;
67
+ padding: 1rem 2rem;
68
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
69
+ color: white;
70
+ border-radius: 8px;
71
+ font-weight: 600;
72
+ transition: transform 0.2s, box-shadow 0.2s;
73
+ border: none;
74
+ cursor: pointer;
75
+ font-size: 1rem;
76
+ }
77
+
78
+ .button:hover {
79
+ transform: translateY(-2px);
80
+ box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3);
81
+ }
82
+
83
+ .button-secondary {
84
+ background: transparent;
85
+ border: 2px solid #667eea;
86
+ color: #667eea;
87
+ }
88
+
89
+ .button-secondary:hover {
90
+ background: #667eea;
91
+ color: white;
92
+ }
93
+
94
+ .features-grid {
95
+ display: grid;
96
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
97
+ gap: 2rem;
98
+ margin-top: 3rem;
99
+ }
100
+
101
+ .feature-card {
102
+ background: #1a1a1a;
103
+ padding: 2rem;
104
+ border-radius: 12px;
105
+ border: 1px solid #2a2a2a;
106
+ transition: transform 0.2s, border-color 0.2s;
107
+ }
108
+
109
+ .feature-card:hover {
110
+ transform: translateY(-4px);
111
+ border-color: #667eea;
112
+ }
113
+
114
+ .feature-card h3 {
115
+ font-size: 1.5rem;
116
+ margin-bottom: 1rem;
117
+ color: #fff;
118
+ }
119
+
120
+ .feature-card p {
121
+ color: #a0a0a0;
122
+ line-height: 1.6;
123
+ }
124
+
125
+ .code-block {
126
+ background: #1a1a1a;
127
+ border: 1px solid #2a2a2a;
128
+ border-radius: 8px;
129
+ padding: 1.5rem;
130
+ overflow-x: auto;
131
+ margin: 1.5rem 0;
132
+ }
133
+
134
+ .code-block code {
135
+ color: #a0a0a0;
136
+ font-family: 'Courier New', monospace;
137
+ font-size: 0.9rem;
138
+ }
139
+
140
+ .footer {
141
+ background: #0a0a0a;
142
+ padding: 3rem 0;
143
+ text-align: center;
144
+ color: #666;
145
+ border-top: 1px solid #1a1a1a;
146
+ }
147
+
148
+ @media (max-width: 768px) {
149
+ .hero h1 {
150
+ font-size: 2.5rem;
151
+ }
152
+
153
+ .hero p {
154
+ font-size: 1.2rem;
155
+ }
156
+
157
+ .features-grid {
158
+ grid-template-columns: 1fr;
159
+ }
160
+ }
@@ -0,0 +1,29 @@
1
+ import type { Metadata } from 'next';
2
+ import { Inter } from 'next/font/google';
3
+ import './globals.css';
4
+
5
+ const inter = Inter({ subsets: ['latin'] });
6
+
7
+ export const metadata: Metadata = {
8
+ title: 'HexGrid 3D - Immersive 3D Hexagonal Grid Visualization',
9
+ description: 'A powerful React component for displaying content in an immersive 3D spherical hexagonal grid layout. Perfect for portfolios, galleries, and interactive visualizations.',
10
+ keywords: ['3D', 'hexgrid', 'visualization', 'react', 'three.js', 'spherical', 'interactive'],
11
+ authors: [{ name: 'buley' }],
12
+ openGraph: {
13
+ title: 'HexGrid 3D - Immersive 3D Hexagonal Grid Visualization',
14
+ description: 'A powerful React component for displaying content in an immersive 3D spherical hexagonal grid layout.',
15
+ type: 'website',
16
+ },
17
+ };
18
+
19
+ export default function RootLayout({
20
+ children,
21
+ }: {
22
+ children: React.ReactNode;
23
+ }) {
24
+ return (
25
+ <html lang="en">
26
+ <body className={inter.className}>{children}</body>
27
+ </html>
28
+ );
29
+ }
@@ -0,0 +1,163 @@
1
+ import Link from 'next/link';
2
+
3
+ export default function HomePage() {
4
+ return (
5
+ <main>
6
+ {/* Hero Section */}
7
+ <section className="hero">
8
+ <h1>HexGrid 3D</h1>
9
+ <p>
10
+ A powerful React component for displaying content in an immersive 3D
11
+ spherical hexagonal grid layout. Perfect for portfolios, galleries, and
12
+ interactive visualizations.
13
+ </p>
14
+ <div style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap', justifyContent: 'center' }}>
15
+ <Link href="/docs" className="button">
16
+ Get Started
17
+ </Link>
18
+ <Link href="/examples" className="button button-secondary">
19
+ View Examples
20
+ </Link>
21
+ <a
22
+ href="https://github.com/buley/hexgrid-3d"
23
+ target="_blank"
24
+ rel="noopener noreferrer"
25
+ className="button button-secondary"
26
+ >
27
+ GitHub
28
+ </a>
29
+ </div>
30
+ </section>
31
+
32
+ {/* Features Section */}
33
+ <section className="section container">
34
+ <h2 style={{ fontSize: '2.5rem', marginBottom: '1rem', textAlign: 'center' }}>
35
+ Powerful Features
36
+ </h2>
37
+ <p style={{ textAlign: 'center', color: '#a0a0a0', marginBottom: '3rem', fontSize: '1.2rem' }}>
38
+ Everything you need to create stunning 3D visualizations
39
+ </p>
40
+ <div className="features-grid">
41
+ <div className="feature-card">
42
+ <div style={{ marginBottom: '1rem', color: '#667eea', fontSize: '2rem' }}>📐</div>
43
+ <h3>3D Hexagonal Grid</h3>
44
+ <p>
45
+ Spherical projection with customizable curvature. Display your content
46
+ in an immersive 3D space that adapts to any viewport.
47
+ </p>
48
+ </div>
49
+
50
+ <div className="feature-card">
51
+ <div style={{ marginBottom: '1rem', color: '#667eea', fontSize: '2rem' }}>📷</div>
52
+ <h3>Interactive Camera</h3>
53
+ <p>
54
+ Pan, zoom, and rotate with smooth transitions. Support for mouse,
55
+ touch, and keyboard controls with inside/outside views.
56
+ </p>
57
+ </div>
58
+
59
+ <div className="feature-card">
60
+ <div style={{ marginBottom: '1rem', color: '#667eea', fontSize: '2rem' }}>⚡</div>
61
+ <h3>High Performance</h3>
62
+ <p>
63
+ Web Worker rendering for 60fps performance. Automatic texture caching
64
+ and adaptive quality based on device capabilities.
65
+ </p>
66
+ </div>
67
+
68
+ <div className="feature-card">
69
+ <div style={{ marginBottom: '1rem', color: '#667eea', fontSize: '2rem' }}>🎨</div>
70
+ <h3>Dynamic Theming</h3>
71
+ <p>
72
+ Automatic accent color extraction from images. Seamless integration
73
+ with your app&apos;s theme system.
74
+ </p>
75
+ </div>
76
+
77
+ <div className="feature-card">
78
+ <div style={{ marginBottom: '1rem', color: '#667eea', fontSize: '2rem' }}>📱</div>
79
+ <h3>Responsive Design</h3>
80
+ <p>
81
+ Fully responsive for mobile and desktop. Touch gestures, pinch-to-zoom,
82
+ and adaptive layouts for all screen sizes.
83
+ </p>
84
+ </div>
85
+
86
+ <div className="feature-card">
87
+ <div style={{ marginBottom: '1rem', color: '#667eea', fontSize: '2rem' }}>💻</div>
88
+ <h3>TypeScript Ready</h3>
89
+ <p>
90
+ Fully typed with comprehensive TypeScript definitions. Includes
91
+ comprehensive tests and documentation.
92
+ </p>
93
+ </div>
94
+ </div>
95
+ </section>
96
+
97
+ {/* Quick Start Section */}
98
+ <section className="section container">
99
+ <h2 style={{ fontSize: '2.5rem', marginBottom: '2rem', textAlign: 'center' }}>
100
+ Quick Start
101
+ </h2>
102
+ <div className="code-block">
103
+ <code>
104
+ {`npm install @buley/hexgrid-3d`}
105
+ </code>
106
+ </div>
107
+ <div className="code-block">
108
+ <code>
109
+ {`import { HexGrid, Photo } from '@buley/hexgrid-3d'
110
+
111
+ function MyComponent() {
112
+ const photos: Photo[] = [
113
+ {
114
+ id: '1',
115
+ url: 'https://example.com/photo.jpg',
116
+ source: 'example',
117
+ createdAt: new Date().toISOString()
118
+ }
119
+ ]
120
+
121
+ return (
122
+ <HexGrid
123
+ photos={photos}
124
+ onHexClick={(photo) => console.log('Clicked:', photo)}
125
+ />
126
+ )
127
+ }`}
128
+ </code>
129
+ </div>
130
+ <div style={{ textAlign: 'center', marginTop: '2rem' }}>
131
+ <Link href="/docs" className="button">
132
+ Read Full Documentation
133
+ </Link>
134
+ </div>
135
+ </section>
136
+
137
+ {/* Footer */}
138
+ <footer className="footer">
139
+ <div className="container">
140
+ <p>&copy; 2024 HexGrid 3D. Personal Use Only License.</p>
141
+ <p style={{ marginTop: '0.5rem', fontSize: '0.9rem' }}>
142
+ <a
143
+ href="https://github.com/buley/hexgrid-3d"
144
+ target="_blank"
145
+ rel="noopener noreferrer"
146
+ style={{ color: '#667eea' }}
147
+ >
148
+ View on GitHub
149
+ </a>
150
+ {' • '}
151
+ <Link href="/docs" style={{ color: '#667eea' }}>
152
+ Documentation
153
+ </Link>
154
+ {' • '}
155
+ <Link href="/examples" style={{ color: '#667eea' }}>
156
+ Examples
157
+ </Link>
158
+ </p>
159
+ </div>
160
+ </footer>
161
+ </main>
162
+ );
163
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./src/*"],
23
+ "@/components/*": ["./src/components/*"],
24
+ "@/lib/*": ["./src/lib/*"]
25
+ }
26
+ },
27
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
28
+ "exclude": ["node_modules"]
29
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "framework": "nextjs",
3
+ "buildCommand": "npm run build",
4
+ "outputDirectory": ".next",
5
+ "installCommand": "npm install"
6
+ }