Stijnus
commited on
Commit
·
2c991e4
1
Parent(s):
1eae44d
revert
Browse files- app/components/chat/StarterTemplates.tsx +1 -1
- app/utils/constants.ts +10 -10
- uno.config.ts +19 -6
app/components/chat/StarterTemplates.tsx
CHANGED
|
@@ -14,7 +14,7 @@ const FrameworkLink: React.FC<FrameworkLinkProps> = ({ template }) => (
|
|
| 14 |
className="items-center justify-center"
|
| 15 |
>
|
| 16 |
<div
|
| 17 |
-
className={`inline-
|
| 18 |
title={template.label}
|
| 19 |
/>
|
| 20 |
</a>
|
|
|
|
| 14 |
className="items-center justify-center"
|
| 15 |
>
|
| 16 |
<div
|
| 17 |
+
className={`inline-block ${template.icon} w-8 h-8 text-4xl transition-theme opacity-25 hover:opacity-100 hover:text-purple-500 dark:text-white dark:opacity-50 dark:hover:opacity-100 dark:hover:text-purple-400 transition-all`}
|
| 18 |
title={template.label}
|
| 19 |
/>
|
| 20 |
</a>
|
app/utils/constants.ts
CHANGED
|
@@ -31,7 +31,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 31 |
description: 'Lightweight Astro starter template for building fast static websites',
|
| 32 |
githubRepo: 'thecodacus/bolt-astro-basic-template',
|
| 33 |
tags: ['astro', 'blog', 'performance'],
|
| 34 |
-
icon: 'i-bolt
|
| 35 |
},
|
| 36 |
{
|
| 37 |
name: 'bolt-nextjs-shadcn',
|
|
@@ -39,7 +39,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 39 |
description: 'Next.js starter fullstack template integrated with shadcn/ui components and styling system',
|
| 40 |
githubRepo: 'thecodacus/bolt-nextjs-shadcn-template',
|
| 41 |
tags: ['nextjs', 'react', 'typescript', 'shadcn', 'tailwind'],
|
| 42 |
-
icon: 'i-bolt
|
| 43 |
},
|
| 44 |
{
|
| 45 |
name: 'bolt-qwik-ts',
|
|
@@ -47,7 +47,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 47 |
description: 'Qwik framework starter with TypeScript for building resumable applications',
|
| 48 |
githubRepo: 'thecodacus/bolt-qwik-ts-template',
|
| 49 |
tags: ['qwik', 'typescript', 'performance', 'resumable'],
|
| 50 |
-
icon: 'i-bolt
|
| 51 |
},
|
| 52 |
{
|
| 53 |
name: 'bolt-remix-ts',
|
|
@@ -55,7 +55,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 55 |
description: 'Remix framework starter with TypeScript for full-stack web applications',
|
| 56 |
githubRepo: 'thecodacus/bolt-remix-ts-template',
|
| 57 |
tags: ['remix', 'typescript', 'fullstack', 'react'],
|
| 58 |
-
icon: 'i-bolt
|
| 59 |
},
|
| 60 |
{
|
| 61 |
name: 'bolt-slidev',
|
|
@@ -71,7 +71,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 71 |
description: 'SvelteKit starter template for building fast, efficient web applications',
|
| 72 |
githubRepo: 'bolt-sveltekit-template',
|
| 73 |
tags: ['svelte', 'sveltekit', 'typescript'],
|
| 74 |
-
icon: 'i-bolt
|
| 75 |
},
|
| 76 |
{
|
| 77 |
name: 'vanilla-vite',
|
|
@@ -79,7 +79,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 79 |
description: 'Minimal Vite starter template for vanilla JavaScript projects',
|
| 80 |
githubRepo: 'thecodacus/vanilla-vite-template',
|
| 81 |
tags: ['vite', 'vanilla-js', 'minimal'],
|
| 82 |
-
icon: 'i-bolt
|
| 83 |
},
|
| 84 |
{
|
| 85 |
name: 'bolt-vite-react',
|
|
@@ -87,7 +87,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 87 |
description: 'React starter template powered by Vite for fast development experience',
|
| 88 |
githubRepo: 'thecodacus/bolt-vite-react-ts-template',
|
| 89 |
tags: ['react', 'vite', 'frontend'],
|
| 90 |
-
icon: 'i-bolt
|
| 91 |
},
|
| 92 |
{
|
| 93 |
name: 'bolt-vite-ts',
|
|
@@ -95,7 +95,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 95 |
description: 'Vite starter template with TypeScript configuration for type-safe development',
|
| 96 |
githubRepo: 'thecodacus/bolt-vite-ts-template',
|
| 97 |
tags: ['vite', 'typescript', 'minimal'],
|
| 98 |
-
icon: 'i-bolt
|
| 99 |
},
|
| 100 |
{
|
| 101 |
name: 'bolt-vue',
|
|
@@ -103,7 +103,7 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 103 |
description: 'Vue.js starter template with modern tooling and best practices',
|
| 104 |
githubRepo: 'thecodacus/bolt-vue-template',
|
| 105 |
tags: ['vue', 'typescript', 'frontend'],
|
| 106 |
-
icon: 'i-bolt
|
| 107 |
},
|
| 108 |
{
|
| 109 |
name: 'bolt-angular',
|
|
@@ -111,6 +111,6 @@ export const STARTER_TEMPLATES: Template[] = [
|
|
| 111 |
description: 'A modern Angular starter template with TypeScript support and best practices configuration',
|
| 112 |
githubRepo: 'thecodacus/bolt-angular-template',
|
| 113 |
tags: ['angular', 'typescript', 'frontend', 'spa'],
|
| 114 |
-
icon: 'i-bolt
|
| 115 |
},
|
| 116 |
];
|
|
|
|
| 31 |
description: 'Lightweight Astro starter template for building fast static websites',
|
| 32 |
githubRepo: 'thecodacus/bolt-astro-basic-template',
|
| 33 |
tags: ['astro', 'blog', 'performance'],
|
| 34 |
+
icon: 'i-bolt:astro',
|
| 35 |
},
|
| 36 |
{
|
| 37 |
name: 'bolt-nextjs-shadcn',
|
|
|
|
| 39 |
description: 'Next.js starter fullstack template integrated with shadcn/ui components and styling system',
|
| 40 |
githubRepo: 'thecodacus/bolt-nextjs-shadcn-template',
|
| 41 |
tags: ['nextjs', 'react', 'typescript', 'shadcn', 'tailwind'],
|
| 42 |
+
icon: 'i-bolt:nextjs',
|
| 43 |
},
|
| 44 |
{
|
| 45 |
name: 'bolt-qwik-ts',
|
|
|
|
| 47 |
description: 'Qwik framework starter with TypeScript for building resumable applications',
|
| 48 |
githubRepo: 'thecodacus/bolt-qwik-ts-template',
|
| 49 |
tags: ['qwik', 'typescript', 'performance', 'resumable'],
|
| 50 |
+
icon: 'i-bolt:qwik',
|
| 51 |
},
|
| 52 |
{
|
| 53 |
name: 'bolt-remix-ts',
|
|
|
|
| 55 |
description: 'Remix framework starter with TypeScript for full-stack web applications',
|
| 56 |
githubRepo: 'thecodacus/bolt-remix-ts-template',
|
| 57 |
tags: ['remix', 'typescript', 'fullstack', 'react'],
|
| 58 |
+
icon: 'i-bolt:remix',
|
| 59 |
},
|
| 60 |
{
|
| 61 |
name: 'bolt-slidev',
|
|
|
|
| 71 |
description: 'SvelteKit starter template for building fast, efficient web applications',
|
| 72 |
githubRepo: 'bolt-sveltekit-template',
|
| 73 |
tags: ['svelte', 'sveltekit', 'typescript'],
|
| 74 |
+
icon: 'i-bolt:svelte',
|
| 75 |
},
|
| 76 |
{
|
| 77 |
name: 'vanilla-vite',
|
|
|
|
| 79 |
description: 'Minimal Vite starter template for vanilla JavaScript projects',
|
| 80 |
githubRepo: 'thecodacus/vanilla-vite-template',
|
| 81 |
tags: ['vite', 'vanilla-js', 'minimal'],
|
| 82 |
+
icon: 'i-bolt:vite',
|
| 83 |
},
|
| 84 |
{
|
| 85 |
name: 'bolt-vite-react',
|
|
|
|
| 87 |
description: 'React starter template powered by Vite for fast development experience',
|
| 88 |
githubRepo: 'thecodacus/bolt-vite-react-ts-template',
|
| 89 |
tags: ['react', 'vite', 'frontend'],
|
| 90 |
+
icon: 'i-bolt:react',
|
| 91 |
},
|
| 92 |
{
|
| 93 |
name: 'bolt-vite-ts',
|
|
|
|
| 95 |
description: 'Vite starter template with TypeScript configuration for type-safe development',
|
| 96 |
githubRepo: 'thecodacus/bolt-vite-ts-template',
|
| 97 |
tags: ['vite', 'typescript', 'minimal'],
|
| 98 |
+
icon: 'i-bolt:typescript',
|
| 99 |
},
|
| 100 |
{
|
| 101 |
name: 'bolt-vue',
|
|
|
|
| 103 |
description: 'Vue.js starter template with modern tooling and best practices',
|
| 104 |
githubRepo: 'thecodacus/bolt-vue-template',
|
| 105 |
tags: ['vue', 'typescript', 'frontend'],
|
| 106 |
+
icon: 'i-bolt:vue',
|
| 107 |
},
|
| 108 |
{
|
| 109 |
name: 'bolt-angular',
|
|
|
|
| 111 |
description: 'A modern Angular starter template with TypeScript support and best practices configuration',
|
| 112 |
githubRepo: 'thecodacus/bolt-angular-template',
|
| 113 |
tags: ['angular', 'typescript', 'frontend', 'spa'],
|
| 114 |
+
icon: 'i-bolt:angular',
|
| 115 |
},
|
| 116 |
];
|
uno.config.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { globSync } from 'fast-glob';
|
|
| 2 |
import fs from 'node:fs/promises';
|
| 3 |
import { basename, join } from 'node:path';
|
| 4 |
import { defineConfig, presetIcons, presetUno, transformerDirectives } from 'unocss';
|
|
|
|
| 5 |
|
| 6 |
// Debug: Log the current working directory and icon paths
|
| 7 |
console.log('CWD:', process.cwd());
|
|
@@ -15,11 +16,13 @@ const customIconCollection = {
|
|
| 15 |
[collectionName]: iconPaths.reduce(
|
| 16 |
(acc, iconPath) => {
|
| 17 |
const [iconName] = basename(iconPath).split('.');
|
| 18 |
-
console.log(`Loading icon: ${iconName} from ${iconPath}`);
|
| 19 |
|
| 20 |
acc[iconName] = async () => {
|
| 21 |
try {
|
| 22 |
const content = await fs.readFile(iconPath, 'utf8');
|
|
|
|
|
|
|
| 23 |
return content
|
| 24 |
.replace(/fill="[^"]*"/g, 'fill="currentColor"')
|
| 25 |
.replace(/fill='[^']*'/g, "fill='currentColor'")
|
|
@@ -120,7 +123,7 @@ export default defineConfig({
|
|
| 120 |
safelist: [
|
| 121 |
// Explicitly safelist all icon combinations
|
| 122 |
...Object.keys(customIconCollection[collectionName] || {}).map((x) => `i-${collectionName}-${x}`),
|
| 123 |
-
...Object.keys(customIconCollection[collectionName] || {}).map((x) => `i-${collectionName}
|
| 124 |
],
|
| 125 |
shortcuts: {
|
| 126 |
'bolt-ease-cubic-bezier': 'ease-[cubic-bezier(0.4,0,0.2,1)]',
|
|
@@ -263,7 +266,11 @@ export default defineConfig({
|
|
| 263 |
presetIcons({
|
| 264 |
warn: true,
|
| 265 |
collections: {
|
| 266 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
},
|
| 268 |
extraProperties: {
|
| 269 |
display: 'inline-block',
|
|
@@ -271,9 +278,15 @@ export default defineConfig({
|
|
| 271 |
width: '24px',
|
| 272 |
height: '24px',
|
| 273 |
},
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 277 |
}),
|
| 278 |
],
|
| 279 |
});
|
|
|
|
| 2 |
import fs from 'node:fs/promises';
|
| 3 |
import { basename, join } from 'node:path';
|
| 4 |
import { defineConfig, presetIcons, presetUno, transformerDirectives } from 'unocss';
|
| 5 |
+
import type { IconifyJSON } from '@iconify/types';
|
| 6 |
|
| 7 |
// Debug: Log the current working directory and icon paths
|
| 8 |
console.log('CWD:', process.cwd());
|
|
|
|
| 16 |
[collectionName]: iconPaths.reduce(
|
| 17 |
(acc, iconPath) => {
|
| 18 |
const [iconName] = basename(iconPath).split('.');
|
| 19 |
+
console.log(`Loading icon: ${iconName} from ${iconPath}`); // Debug log
|
| 20 |
|
| 21 |
acc[iconName] = async () => {
|
| 22 |
try {
|
| 23 |
const content = await fs.readFile(iconPath, 'utf8');
|
| 24 |
+
|
| 25 |
+
// Simplified SVG processing
|
| 26 |
return content
|
| 27 |
.replace(/fill="[^"]*"/g, 'fill="currentColor"')
|
| 28 |
.replace(/fill='[^']*'/g, "fill='currentColor'")
|
|
|
|
| 123 |
safelist: [
|
| 124 |
// Explicitly safelist all icon combinations
|
| 125 |
...Object.keys(customIconCollection[collectionName] || {}).map((x) => `i-${collectionName}-${x}`),
|
| 126 |
+
...Object.keys(customIconCollection[collectionName] || {}).map((x) => `i-${collectionName}:${x}`),
|
| 127 |
],
|
| 128 |
shortcuts: {
|
| 129 |
'bolt-ease-cubic-bezier': 'ease-[cubic-bezier(0.4,0,0.2,1)]',
|
|
|
|
| 266 |
presetIcons({
|
| 267 |
warn: true,
|
| 268 |
collections: {
|
| 269 |
+
bolt: customIconCollection.bolt,
|
| 270 |
+
ph: async () => {
|
| 271 |
+
const icons = await import('@iconify-json/ph/icons.json');
|
| 272 |
+
return icons.default as IconifyJSON;
|
| 273 |
+
},
|
| 274 |
},
|
| 275 |
extraProperties: {
|
| 276 |
display: 'inline-block',
|
|
|
|
| 278 |
width: '24px',
|
| 279 |
height: '24px',
|
| 280 |
},
|
| 281 |
+
customizations: {
|
| 282 |
+
customize(props) {
|
| 283 |
+
return {
|
| 284 |
+
...props,
|
| 285 |
+
width: '24px',
|
| 286 |
+
height: '24px',
|
| 287 |
+
};
|
| 288 |
+
},
|
| 289 |
+
},
|
| 290 |
}),
|
| 291 |
],
|
| 292 |
});
|