From 9c1b0bb9c02eca4aa8250bf643186ce522902ef6 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Sun, 1 Jun 2025 04:45:16 +0100 Subject: [PATCH] feat: enable fonts by theme(courseapp) --- apps/course-app/src/routes/+page.svelte | 7 ++-- packages/course-app/lib/scaffoldTemplate.ts | 20 +++++----- packages/course-app/package.json | 2 +- packages/course-app/src/template/package.json | 1 + packages/course-app/src/template/src/app.css | 4 +- .../lib/components/bootcamp/CourseCard.svelte | 2 +- .../bootcamp/TestimonialCard.svelte | 2 +- .../src/lib/components/bootcamp/index.ts | 8 +++- .../components/bootcamp/pages/Course.svelte | 10 ++--- .../lib/components/bootcamp/pages/Home.svelte | 16 ++++---- .../template/src/lib/components/cal/index.ts | 8 +++- .../src/lib/components/cal/pages/Home.svelte | 2 +- .../src/lib/components/classic/index.ts | 9 ++++- .../lib/components/classic/pages/Home.svelte | 10 +++-- .../lib/components/examprep/CourseCard.svelte | 2 +- .../src/lib/components/examprep/index.ts | 9 ++++- .../components/examprep/pages/Course.svelte | 8 ++-- .../lib/components/examprep/pages/Home.svelte | 12 +++--- .../src/template/src/lib/components/index.ts | 39 ++++++++++++++----- .../src/lib/components/minimal/index.ts | 9 ++++- .../lib/components/minimal/pages/Home.svelte | 2 +- .../src/lib/components/posthog/index.ts | 8 +++- .../lib/components/posthog/pages/Home.svelte | 13 ++++--- .../src/lib/components/webflow/index.ts | 9 ++++- .../src/template/src/routes/+layout.svelte | 8 +++- .../course-app/src/template/svelte.config.js | 16 +++++--- .../src/template/tailwind.config.ts | 26 ++++++++++++- packages/course-app/templates.json | 4 ++ packages/course-app/utils/copyFolder.ts | 3 +- 29 files changed, 179 insertions(+), 90 deletions(-) diff --git a/apps/course-app/src/routes/+page.svelte b/apps/course-app/src/routes/+page.svelte index 93c86703..8d1be1bf 100644 --- a/apps/course-app/src/routes/+page.svelte +++ b/apps/course-app/src/routes/+page.svelte @@ -95,15 +95,14 @@ - Create an Academy - Site for your SAAS in + Create a Course + Site for your Product in MINUTES

- With our prebuilt templates, you can setup a fully functional customer educational - website for your product & idea in minutes.
+ With our prebuilt templates, you can setup a fully functional course website for your product & idea in minutes.
Similar to the likes of diff --git a/packages/course-app/lib/scaffoldTemplate.ts b/packages/course-app/lib/scaffoldTemplate.ts index c11cd0e2..09241f78 100644 --- a/packages/course-app/lib/scaffoldTemplate.ts +++ b/packages/course-app/lib/scaffoldTemplate.ts @@ -1,10 +1,10 @@ import chalk from 'chalk'; -import ora from 'ora'; -import fs from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; import { copyCoursesFolder } from '../utils/copyCoursesFolder'; import { copyFolderSync } from '../utils/copyFolder'; +import { fileURLToPath } from 'url'; +import fs from 'fs'; +import ora from 'ora'; +import path from 'path'; // Define the interface for function parameters interface ScaffoldTemplateParams { @@ -20,11 +20,9 @@ const __dirname = path.dirname(__filename); const packageRoot = path.join(__dirname, '..'); const spinner = ora(); -async function rewriteComponentsFile(filePath: string, template: string): Promise { - const newContent = `export { components } from './${template}';`; - +async function rewriteComponentsFile(filePath: string, content: string): Promise { try { - fs.writeFileSync(filePath, newContent); + fs.writeFileSync(filePath, content); } catch (error) { console.error(`Error writing to file: ${error}`); } @@ -80,7 +78,11 @@ export async function scaffoldTemplate({ // Update root import of components to reflect only selected template const componentsIndex = path.join(projectPath, 'src', 'lib', 'components', 'index.ts'); - await rewriteComponentsFile(componentsIndex, template); + await rewriteComponentsFile( + componentsIndex, + `export { components, utils } from './${template}';` + ); + await rewriteComponentsFile(path.join(projectPath, '.env'), `VITE_TEMPLATE=${template}`); // If the user wants demo courses, copy the courses folder spinner.text = chalk.yellow('Setting up courses folder...'); diff --git a/packages/course-app/package.json b/packages/course-app/package.json index 707fb2eb..8e9efac9 100644 --- a/packages/course-app/package.json +++ b/packages/course-app/package.json @@ -1,6 +1,6 @@ { "name": "@classroomio/course-app", - "version": "0.0.14", + "version": "0.0.15", "private": false, "main": "dist/create-template.js", "scripts": { diff --git a/packages/course-app/src/template/package.json b/packages/course-app/src/template/package.json index f1ebbc88..afadc5c1 100644 --- a/packages/course-app/src/template/package.json +++ b/packages/course-app/src/template/package.json @@ -37,6 +37,7 @@ }, "dependencies": { "carbon-icons-svelte": "^12.13.0", + "dotenv": "^16.5.0", "rehype-slug": "^6.0.0", "rehype-unwrap-images": "^1.0.0", "remark-toc": "^9.0.0", diff --git a/packages/course-app/src/template/src/app.css b/packages/course-app/src/template/src/app.css index d4da8d85..2e5fec42 100644 --- a/packages/course-app/src/template/src/app.css +++ b/packages/course-app/src/template/src/app.css @@ -1,5 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Roboto+Slab:wght@100..900&display=swap'); - @tailwind base; @tailwind components; @tailwind utilities; @@ -92,7 +90,7 @@ @apply border-border; } body { - @apply bg-background text-foreground; + @apply bg-background text-foreground font-app; } } diff --git a/packages/course-app/src/template/src/lib/components/bootcamp/CourseCard.svelte b/packages/course-app/src/template/src/lib/components/bootcamp/CourseCard.svelte index 9b4c18e9..9cf08bce 100644 --- a/packages/course-app/src/template/src/lib/components/bootcamp/CourseCard.svelte +++ b/packages/course-app/src/template/src/lib/components/bootcamp/CourseCard.svelte @@ -18,7 +18,7 @@

-

{title}

+

{title}

diff --git a/packages/course-app/src/template/src/lib/components/bootcamp/TestimonialCard.svelte b/packages/course-app/src/template/src/lib/components/bootcamp/TestimonialCard.svelte index aea0e086..a21ff3df 100644 --- a/packages/course-app/src/template/src/lib/components/bootcamp/TestimonialCard.svelte +++ b/packages/course-app/src/template/src/lib/components/bootcamp/TestimonialCard.svelte @@ -20,7 +20,7 @@
diff --git a/packages/course-app/src/template/src/lib/components/bootcamp/index.ts b/packages/course-app/src/template/src/lib/components/bootcamp/index.ts index d4cf35ed..2491edfb 100644 --- a/packages/course-app/src/template/src/lib/components/bootcamp/index.ts +++ b/packages/course-app/src/template/src/lib/components/bootcamp/index.ts @@ -1,9 +1,9 @@ +import Button from './PrimaryButton.svelte'; import type { Component } from 'svelte'; import CoursesPage from './pages/Course.svelte'; +import Footer from './Footer.svelte'; import HomePage from './pages/Home.svelte'; import Navigation from './Navigation.svelte'; -import Footer from './Footer.svelte'; -import Button from './PrimaryButton.svelte'; import type { TemplateComponents } from '$lib/utils/types/template'; export const components: TemplateComponents = { @@ -13,3 +13,7 @@ export const components: TemplateComponents = { coursespage: CoursesPage as unknown as Component, homepage: HomePage as unknown as Component }; + +export const utils = { + fontLink: 'https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100..900&display=swap' +}; diff --git a/packages/course-app/src/template/src/lib/components/bootcamp/pages/Course.svelte b/packages/course-app/src/template/src/lib/components/bootcamp/pages/Course.svelte index 4430da78..d53a06a7 100644 --- a/packages/course-app/src/template/src/lib/components/bootcamp/pages/Course.svelte +++ b/packages/course-app/src/template/src/lib/components/bootcamp/pages/Course.svelte @@ -74,7 +74,7 @@ {section.header.settings.title}

-

+

{section.header.settings.subtitle}

@@ -95,10 +95,10 @@
-

+

{section.courses.settings.title}

-

+

{section.courses.settings.subtitle}

@@ -107,7 +107,7 @@ {#if $courses.length > 0}