@vojtaholik/create-static-kit 1.0.7 → 2.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 (71) hide show
  1. package/package.json +6 -37
  2. package/src/index.ts +41 -0
  3. package/template/blocks/feature-grid.block.html +28 -0
  4. package/template/blocks/feature-grid.block.ts +32 -0
  5. package/template/blocks/gen/feature-grid.render.ts +92 -0
  6. package/template/blocks/gen/hero.render.ts +79 -0
  7. package/template/blocks/gen/index.ts +4 -0
  8. package/template/blocks/gen/latest-posts.render.ts +114 -0
  9. package/template/blocks/gen/text-section.render.ts +69 -0
  10. package/template/blocks/hero.block.html +31 -0
  11. package/template/blocks/hero.block.ts +40 -0
  12. package/template/blocks/index.ts +31 -0
  13. package/template/blocks/latest-posts.block.html +38 -0
  14. package/template/blocks/latest-posts.block.ts +45 -0
  15. package/template/blocks/text-section.block.html +18 -0
  16. package/template/blocks/text-section.block.ts +25 -0
  17. package/template/cms-blocks.ts +197 -0
  18. package/template/package.json +21 -0
  19. package/template/public/css/styles.css +589 -0
  20. package/template/public/js/dev-overlay.js +366 -0
  21. package/template/public/js/index.js +35 -0
  22. package/template/public/sprite.svg +6 -0
  23. package/template/public/svg/magic-wand.svg +4 -0
  24. package/template/site/pages/about.page.ts +91 -0
  25. package/template/site/pages/base.html +38 -0
  26. package/template/site/pages/index.page.ts +107 -0
  27. package/template/site/pages/index.ts +16 -0
  28. package/template/static-kit.config.ts +10 -0
  29. package/template/tsconfig.json +23 -0
  30. package/bin/create-static-kit.js +0 -3
  31. package/dist/cli.d.ts +0 -3
  32. package/dist/cli.d.ts.map +0 -1
  33. package/dist/cli.js +0 -488
  34. package/templates/default/.cursor/rules/configuration.mdc +0 -20
  35. package/templates/default/.cursor/rules/figma-integration.mdc +0 -22
  36. package/templates/default/.cursor/rules/html-components.mdc +0 -24
  37. package/templates/default/.cursor/rules/html-pages.mdc +0 -22
  38. package/templates/default/.cursor/rules/inline-tailwind-to-bem-with-apply-directive.mdc +0 -218
  39. package/templates/default/.cursor/rules/project-overview.mdc +0 -30
  40. package/templates/default/.cursor/rules/public-assets.mdc +0 -22
  41. package/templates/default/.cursor/rules/scss-styles.mdc +0 -22
  42. package/templates/default/.cursor/rules/svg-icons.mdc +0 -22
  43. package/templates/default/.cursor/rules/typescript-js.mdc +0 -23
  44. package/templates/default/public/favicon.ico +0 -1
  45. package/templates/default/src/components/button.html +0 -1
  46. package/templates/default/src/components/feature-card.html +0 -8
  47. package/templates/default/src/components/footer.html +0 -5
  48. package/templates/default/src/components/navigation.html +0 -11
  49. package/templates/default/src/icons/ui/star.svg +0 -3
  50. package/templates/default/src/js/index.ts +0 -28
  51. package/templates/default/src/pages/about.html +0 -24
  52. package/templates/default/src/pages/index.html +0 -23
  53. package/templates/default/src/styles/main.scss +0 -210
  54. package/templates/default/tsconfig.json +0 -19
  55. package/templates/minimal/.cursor/rules/configuration.mdc +0 -20
  56. package/templates/minimal/.cursor/rules/figma-integration.mdc +0 -22
  57. package/templates/minimal/.cursor/rules/html-components.mdc +0 -24
  58. package/templates/minimal/.cursor/rules/html-pages.mdc +0 -22
  59. package/templates/minimal/.cursor/rules/inline-tailwind-to-bem-with-apply-directive.mdc +0 -218
  60. package/templates/minimal/.cursor/rules/project-overview.mdc +0 -30
  61. package/templates/minimal/.cursor/rules/public-assets.mdc +0 -22
  62. package/templates/minimal/.cursor/rules/scss-styles.mdc +0 -22
  63. package/templates/minimal/.cursor/rules/svg-icons.mdc +0 -22
  64. package/templates/minimal/.cursor/rules/typescript-js.mdc +0 -23
  65. package/templates/minimal/public/favicon.ico +0 -1
  66. package/templates/minimal/src/components/footer.html +0 -3
  67. package/templates/minimal/src/components/header.html +0 -6
  68. package/templates/minimal/src/js/index.ts +0 -9
  69. package/templates/minimal/src/pages/index.html +0 -15
  70. package/templates/minimal/src/styles/main.scss +0 -77
  71. package/templates/minimal/tsconfig.json +0 -19
@@ -1,218 +0,0 @@
1
- ---
2
- description: Convert inline Tailwind CSS utility classes to BEM-compliant @apply directives in CSS files
3
- globs: ["**/*"]
4
- alwaysApply: true
5
- ---
6
-
7
- # Tailwind CSS v4 @apply Conversion Specialist
8
-
9
- You are a Tailwind CSS v4 expert focused on converting inline utility classes to `@apply` directives in CSS files.
10
-
11
- ## Core Rules
12
-
13
- ### Tailwind CSS v4 Context
14
-
15
- - Always use `@import "tailwindcss";` syntax (not the old v3 @tailwind directives)
16
- - Understand that v4 uses CSS-first configuration and native CSS features
17
- - Recognize that @apply works the same but the import syntax has changed
18
-
19
- ### @apply Conversion Guidelines
20
-
21
- #### MANDATORY CONVERSION RULE
22
-
23
- **ALWAYS convert inline utility classes to @apply when asked.** No exceptions, no questions, no debate about whether it's "worth it". If the user asks for conversion, you fucking do it.
24
-
25
- #### BEM Naming Convention
26
-
27
- **ALWAYS use BEM (Block Element Modifier) methodology for class names:**
28
-
29
- - **Block**: `.card`, `.button`, `.navbar`
30
- - **Element**: `.card__title`, `.card__content`, `.button__icon`
31
- - **Modifier**: `.card--primary`, `.button--large`, `.navbar--mobile`
32
-
33
- #### BEM Examples
34
-
35
- ```css
36
- /* Block */
37
- .card {
38
- @apply bg-white rounded-lg shadow-md p-6;
39
- }
40
-
41
- /* Element */
42
- .card__header {
43
- @apply border-b border-gray-200 pb-4 mb-4;
44
- }
45
-
46
- .card__title {
47
- @apply text-xl font-semibold text-gray-900;
48
- }
49
-
50
- .card__content {
51
- @apply text-gray-600 leading-relaxed;
52
- }
53
-
54
- /* Modifier */
55
- .card--primary {
56
- @apply border-l-4 border-blue-500;
57
- }
58
-
59
- .card--error {
60
- @apply border-l-4 border-red-500 bg-red-50;
61
- }
62
- ```
63
-
64
- #### Conversion Rules
65
-
66
- - **User request = immediate conversion** (no questioning)
67
- - Convert ANY utility classes when user requests it
68
- - Create BEM-compliant class names that describe component structure
69
- - Group related properties logically in @apply statements
70
- - Preserve responsive/state variants when complex
71
-
72
- #### Conversion Process
73
-
74
- 1. **Identify the component structure**: Determine Block, Elements, and Modifiers
75
- 2. **Create BEM class names**: Use semantic names that describe purpose and hierarchy
76
- 3. **Group logically**: Organize related properties together in @apply statements
77
- 4. **Preserve responsive/state variants**: Keep complex variants inline if needed
78
-
79
- #### Best Practices
80
-
81
- ```css
82
- /* ✅ Good: BEM naming with logical grouping */
83
- .card {
84
- @apply bg-white rounded-lg shadow-md;
85
- @apply p-6 border border-gray-200;
86
- }
87
-
88
- .card--primary {
89
- @apply border-l-4 border-blue-500;
90
- }
91
-
92
- .button {
93
- @apply text-white font-medium px-4 py-2 rounded-md;
94
- @apply transition-colors duration-200;
95
- }
96
-
97
- .button--primary {
98
- @apply bg-blue-500 hover:bg-blue-600;
99
- }
100
-
101
- .button__icon {
102
- @apply mr-2 w-4 h-4;
103
- }
104
-
105
- /* ❌ Bad: Non-BEM naming */
106
- .blue-rounded {
107
- @apply bg-blue-500 rounded-md;
108
- }
109
-
110
- /* ❌ Bad: Non-semantic naming */
111
- .margin-top {
112
- @apply mt-4;
113
- }
114
- ```
115
-
116
- #### Handling Complex Cases
117
-
118
- - **Responsive variants**: Keep complex responsive logic inline, abstract base styles
119
- - **State variants**: Group base styles in @apply, keep interactive states inline when complex
120
- - **Component variants**: Create separate classes for different component states
121
-
122
- #### File Organization
123
-
124
- - Place @apply styles in the same file as the `@import "tailwindcss";`
125
- - Group related component styles together
126
- - Use comments to organize sections
127
- - Follow this structure:
128
-
129
- ```css
130
- @import "tailwindcss";
131
-
132
- /* Base component styles */
133
- .card {
134
- /* ... */
135
- }
136
- .button {
137
- /* ... */
138
- }
139
-
140
- /* Layout components */
141
- .container {
142
- /* ... */
143
- }
144
- .grid-layout {
145
- /* ... */
146
- }
147
-
148
- /* Utility combinations */
149
- .form-input {
150
- /* ... */
151
- }
152
- .error-text {
153
- /* ... */
154
- }
155
- ```
156
-
157
- ### Conversion Examples
158
-
159
- #### Before (inline classes):
160
-
161
- ```html
162
- <div
163
- class="bg-white rounded-lg shadow-md p-6 border border-gray-200 hover:shadow-lg transition-shadow"
164
- >
165
- <h2 class="text-xl font-semibold text-gray-900 mb-4">Card Title</h2>
166
- <p class="text-gray-600 leading-relaxed">Card content</p>
167
- </div>
168
- ```
169
-
170
- #### After (with @apply and BEM):
171
-
172
- ```css
173
- .card {
174
- @apply bg-white rounded-lg shadow-md p-6 border border-gray-200;
175
- @apply hover:shadow-lg transition-shadow;
176
- }
177
-
178
- .card__title {
179
- @apply text-xl font-semibold text-gray-900 mb-4;
180
- }
181
-
182
- .card__content {
183
- @apply text-gray-600 leading-relaxed;
184
- }
185
- ```
186
-
187
- ```html
188
- <div class="card">
189
- <h2 class="card__title">Card Title</h2>
190
- <p class="card__content">Card content</p>
191
- </div>
192
- ```
193
-
194
- ### Action Instructions
195
-
196
- When converting (MANDATORY when asked):
197
-
198
- 1. **Analyze the HTML/JSX** for component structure and hierarchy
199
- 2. **Create BEM class names** following Block\_\_Element--Modifier pattern
200
- 3. **Show the CSS @apply implementation** with proper BEM organization
201
- 4. **Provide the updated HTML** with new BEM class names
202
- 5. **Explain the BEM structure** and benefits of the conversion
203
-
204
- Always prioritize:
205
-
206
- - **BEM naming convention** (Block\_\_Element--Modifier)
207
- - **Mandatory conversion** when user requests it
208
- - **Component hierarchy** in naming structure
209
- - **Logical grouping** of related properties in @apply statements
210
- - **Semantic naming** that describes purpose and structure
211
-
212
- ### TypeScript Integration
213
-
214
- When working with TypeScript projects, consider:
215
-
216
- - Type-safe class name patterns
217
- - Component prop interfaces for style variants
218
- - Utility types for consistent naming conventions
@@ -1,30 +0,0 @@
1
- ---
2
- description: Static Kit project overview and general guidelines
3
- globs: ["**/*"]
4
- alwaysApply: true
5
- ---
6
-
7
- # Static Kit Framework
8
-
9
- Static site framework with TypeScript, SCSS, and HTML imports. Integrated with Figma MCP for design-to-dev workflow.
10
-
11
- ## Core Principles
12
-
13
- - Use `@components/` prefix for imports, not relative paths
14
- - Follow lowercase kebab-case naming for files
15
- - Keep modules isolated and modular
16
- - Maintain clean separation between pages, components, and styles
17
-
18
- ## Git Conventions
19
-
20
- ### Commit Message Conventions
21
-
22
- - `feat: new component/page`
23
- - `style: scss changes`
24
- - `fix: bugfix`
25
- - `design-sync: figma-linked update`
26
-
27
- ### Ignored Files
28
-
29
- - `dist/` - Build output
30
- - `static-kit.local.json` - Local configuration overrides
@@ -1,22 +0,0 @@
1
- ---
2
- description: Public assets organization and handling
3
- globs: ["public/**/*"]
4
- alwaysApply: false
5
- ---
6
-
7
- # Public Assets
8
-
9
- Static assets copied directly to dist/ with no processing. Organize into logical folders.
10
-
11
- ## Organization
12
-
13
- - `public/images/` - Image assets
14
- - `public/fonts/` - Font files
15
- - `public/` - Other static assets
16
-
17
- ## Guidelines
18
-
19
- - Assets are copied as-is to dist/
20
- - No build-time processing
21
- - Organize into meaningful subdirectories
22
- - Reference in development as `/<filename>` (no 'public' prefix needed)
@@ -1,22 +0,0 @@
1
- ---
2
- description: SCSS styling conventions and import structure
3
- globs: ["src/styles/**/*.scss"]
4
- alwaysApply: false
5
- ---
6
-
7
- # SCSS Styles
8
-
9
- SCSS entrypoint is `src/styles/main.scss`. Component styles should be imported into main.scss.
10
-
11
- ## Import Structure
12
-
13
- ```scss
14
- @import "./components/button.scss";
15
- ```
16
-
17
- ## Guidelines
18
-
19
- - Main entrypoint: `src/styles/main.scss`
20
- - Import component styles into main.scss
21
- - Follow modular SCSS architecture
22
- - Keep component styles organized and focused
@@ -1,22 +0,0 @@
1
- ---
2
- description: SVG icon naming and sprite conventions
3
- globs: ["src/icons/**/*.svg"]
4
- alwaysApply: false
5
- ---
6
-
7
- # SVG Icons
8
-
9
- SVG icons should use lowercase-kebab-case naming. Folder structure defines sprite ID namespace.
10
-
11
- ## Naming Convention
12
-
13
- ```
14
- src/icons/ui/arrow.svg → <use href="/sprite.svg#ui-arrow"></use>
15
- ```
16
-
17
- ## Guidelines
18
-
19
- - Use lowercase kebab-case for icon names
20
- - Folder structure creates namespace (ui/, social/, etc.)
21
- - Icons are compiled into sprite.svg
22
- - Reference using sprite ID format: `namespace-iconname`
@@ -1,23 +0,0 @@
1
- ---
2
- description: TypeScript and JavaScript module conventions
3
- globs: ["src/js/**/*.ts", "src/js/**/*.js"]
4
- alwaysApply: false
5
- ---
6
-
7
- # TypeScript/JavaScript Modules
8
-
9
- Component-specific scripts go in `src/js/components/`. Keep modules isolated with no bundler-only imports.
10
-
11
- ## File Organization
12
-
13
- ```
14
- src/js/components/modal.ts
15
- ```
16
-
17
- ## Guidelines
18
-
19
- - Place component scripts in `src/js/components/`
20
- - Keep modules isolated and modular
21
- - Avoid bundler-only patterns
22
- - Use effective TypeScript for library-style code
23
- - Maintain clean module boundaries
@@ -1 +0,0 @@
1
- # Empty favicon placeholder
@@ -1 +0,0 @@
1
- <a href="/about" class="button button--primary">Get Started</a>
@@ -1,8 +0,0 @@
1
- <div class="feature-card">
2
- <div class="feature-card__icon">
3
- <!-- SVG icon would go here -->
4
- <div class="feature-placeholder">🚀</div>
5
- </div>
6
- <h3>Fast & Modern</h3>
7
- <p>Built with Vite for lightning-fast development and optimized production builds.</p>
8
- </div>
@@ -1,5 +0,0 @@
1
- <footer class="footer">
2
- <div class="container">
3
- <p>&copy; 2024 Your Site. Built with Static Kit.</p>
4
- </div>
5
- </footer>
@@ -1,11 +0,0 @@
1
- <header class="header">
2
- <nav class="nav">
3
- <div class="nav-brand">
4
- <a href="/">Static Kit</a>
5
- </div>
6
- <div class="nav-links">
7
- <a href="/">Home</a>
8
- <a href="/about">About</a>
9
- </div>
10
- </nav>
11
- </header>
@@ -1,3 +0,0 @@
1
- <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
- </svg>
@@ -1,28 +0,0 @@
1
- // Main JavaScript entry point
2
- console.log("Static Kit is ready! 🚀");
3
-
4
- // Example: Add smooth scrolling for anchor links
5
- document.addEventListener("DOMContentLoaded", () => {
6
- // Add click handlers for navigation links
7
- const navLinks = document.querySelectorAll('.nav-links a');
8
-
9
- navLinks.forEach(link => {
10
- link.addEventListener('click', () => {
11
- console.log(`Navigating to: ${link.getAttribute('href')}`);
12
- });
13
- });
14
-
15
- // Example: Add some interactivity to feature cards
16
- const featureCards = document.querySelectorAll('.feature-card');
17
-
18
- featureCards.forEach(card => {
19
- const htmlCard = card as HTMLElement;
20
- htmlCard.addEventListener('mouseenter', () => {
21
- htmlCard.style.transform = 'translateY(-4px)';
22
- });
23
-
24
- htmlCard.addEventListener('mouseleave', () => {
25
- htmlCard.style.transform = 'translateY(0)';
26
- });
27
- });
28
- });
@@ -1,24 +0,0 @@
1
- <!-- @import: @components/navigation.html -->
2
-
3
- <main class="container">
4
- <h1>About Static Kit</h1>
5
-
6
- <section>
7
- <p>Static Kit is a modern static site generator that combines the simplicity of HTML with the power of modern build tools.</p>
8
-
9
- <h2>Why Static Kit?</h2>
10
- <ul>
11
- <li>Zero configuration - just start building</li>
12
- <li>Component-driven development</li>
13
- <li>Modern developer experience</li>
14
- <li>Deployable anywhere</li>
15
- </ul>
16
- </section>
17
-
18
- <section>
19
- <h2>Built With</h2>
20
- <p>Static Kit uses Vite, TypeScript, and SCSS under the hood to provide a fast and modern development experience.</p>
21
- </section>
22
- </main>
23
-
24
- <!-- @import: @components/footer.html -->
@@ -1,23 +0,0 @@
1
- <!-- @import: @components/navigation.html -->
2
-
3
- <section class="hero">
4
- <div class="hero-content">
5
- <h1>Welcome to Static Kit</h1>
6
- <p>A simple, no-bullshit static site framework with TypeScript, SCSS, and HTML imports.</p>
7
-
8
- <!-- @import: @components/button.html -->
9
- </div>
10
- </section>
11
-
12
- <section class="features">
13
- <div class="container">
14
- <h2>Features</h2>
15
- <div class="feature-grid">
16
- <!-- @import: @components/feature-card.html -->
17
- <!-- @import: @components/feature-card.html -->
18
- <!-- @import: @components/feature-card.html -->
19
- </div>
20
- </div>
21
- </section>
22
-
23
- <!-- @import: @components/footer.html -->
@@ -1,210 +0,0 @@
1
- // Modern CSS Reset
2
- *, *::before, *::after {
3
- box-sizing: border-box;
4
- }
5
-
6
- * {
7
- margin: 0;
8
- }
9
-
10
- body {
11
- line-height: 1.5;
12
- -webkit-font-smoothing: antialiased;
13
- font-family: system-ui, sans-serif;
14
- color: #1f2937;
15
- }
16
-
17
- img, picture, video, canvas, svg {
18
- display: block;
19
- max-width: 100%;
20
- }
21
-
22
- // Utilities
23
- .container {
24
- max-width: 1200px;
25
- margin: 0 auto;
26
- padding: 0 1rem;
27
- }
28
-
29
- // Header & Navigation
30
- .header {
31
- background: #ffffff;
32
- border-bottom: 1px solid #e5e7eb;
33
- position: sticky;
34
- top: 0;
35
- z-index: 100;
36
- }
37
-
38
- .nav {
39
- display: flex;
40
- justify-content: space-between;
41
- align-items: center;
42
- padding: 1rem;
43
- max-width: 1200px;
44
- margin: 0 auto;
45
- }
46
-
47
- .nav-brand a {
48
- font-weight: 700;
49
- font-size: 1.25rem;
50
- text-decoration: none;
51
- color: #0066cc;
52
- }
53
-
54
- .nav-links {
55
- display: flex;
56
- gap: 2rem;
57
-
58
- a {
59
- text-decoration: none;
60
- color: #6b7280;
61
- font-weight: 500;
62
- transition: color 0.2s;
63
-
64
- &:hover {
65
- color: #0066cc;
66
- }
67
- }
68
- }
69
-
70
- // Hero Section
71
- .hero {
72
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
73
- color: white;
74
- padding: 4rem 1rem;
75
- text-align: center;
76
- }
77
-
78
- .hero-content {
79
- max-width: 600px;
80
- margin: 0 auto;
81
-
82
- h1 {
83
- font-size: 3rem;
84
- font-weight: 700;
85
- margin-bottom: 1rem;
86
- line-height: 1.2;
87
- }
88
-
89
- p {
90
- font-size: 1.25rem;
91
- margin-bottom: 2rem;
92
- opacity: 0.9;
93
- }
94
- }
95
-
96
- // Button Component
97
- .button {
98
- display: inline-block;
99
- padding: 0.75rem 2rem;
100
- font-weight: 600;
101
- text-decoration: none;
102
- border-radius: 0.5rem;
103
- transition: all 0.2s;
104
- cursor: pointer;
105
- border: none;
106
-
107
- &--primary {
108
- background: #ffffff;
109
- color: #0066cc;
110
-
111
- &:hover {
112
- background: #f8f9fa;
113
- transform: translateY(-1px);
114
- }
115
- }
116
- }
117
-
118
- // Features Section
119
- .features {
120
- padding: 4rem 1rem;
121
- background: #f9fafb;
122
-
123
- h2 {
124
- text-align: center;
125
- font-size: 2.5rem;
126
- margin-bottom: 3rem;
127
- color: #1f2937;
128
- }
129
- }
130
-
131
- .feature-grid {
132
- display: grid;
133
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
134
- gap: 2rem;
135
- max-width: 1000px;
136
- margin: 0 auto;
137
- }
138
-
139
- .feature-card {
140
- background: white;
141
- padding: 2rem;
142
- border-radius: 0.75rem;
143
- box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
144
- text-align: center;
145
-
146
- &__icon {
147
- margin-bottom: 1rem;
148
- }
149
-
150
- .feature-placeholder {
151
- font-size: 3rem;
152
- margin-bottom: 1rem;
153
- }
154
-
155
- h3 {
156
- font-size: 1.25rem;
157
- font-weight: 600;
158
- margin-bottom: 1rem;
159
- color: #1f2937;
160
- }
161
-
162
- p {
163
- color: #6b7280;
164
- line-height: 1.6;
165
- }
166
- }
167
-
168
- // Main Content
169
- main {
170
- padding: 3rem 1rem;
171
-
172
- h1 {
173
- font-size: 2.5rem;
174
- margin-bottom: 2rem;
175
- color: #1f2937;
176
- }
177
-
178
- h2 {
179
- font-size: 1.875rem;
180
- margin: 2rem 0 1rem;
181
- color: #374151;
182
- }
183
-
184
- section {
185
- margin-bottom: 2rem;
186
- }
187
-
188
- ul {
189
- padding-left: 1.5rem;
190
-
191
- li {
192
- margin-bottom: 0.5rem;
193
- color: #4b5563;
194
- }
195
- }
196
-
197
- p {
198
- margin-bottom: 1rem;
199
- color: #4b5563;
200
- line-height: 1.7;
201
- }
202
- }
203
-
204
- // Footer
205
- .footer {
206
- background: #1f2937;
207
- color: #9ca3af;
208
- padding: 2rem 1rem;
209
- text-align: center;
210
- }
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "useDefineForClassFields": true,
5
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
- "module": "ESNext",
7
- "skipLibCheck": true,
8
- "moduleResolution": "bundler",
9
- "allowImportingTsExtensions": true,
10
- "resolveJsonModule": true,
11
- "isolatedModules": true,
12
- "noEmit": true,
13
- "strict": true,
14
- "noUnusedLocals": true,
15
- "noUnusedParameters": true,
16
- "noFallthroughCasesInSwitch": true
17
- },
18
- "include": ["src"]
19
- }