From 1f35f869a1d1bb07fa611fcef10b089132ddab8b Mon Sep 17 00:00:00 2001 From: bender Date: Tue, 3 Mar 2026 07:43:55 +0000 Subject: [PATCH 1/4] Update src/app/layout.tsx --- src/app/layout.tsx | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 1ff10cd..24108f0 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,25 +1,18 @@ import type { Metadata } from "next"; -import { Inter_Tight } from "next/font/google"; -import { Halant } from "next/font/google"; import { Inter } from "next/font/google"; +import { Open_Sans } from "next/font/google"; import "./globals.css"; import { ServiceWrapper } from "@/components/ServiceWrapper"; import Tag from "@/tag/Tag"; -const interTight = Inter_Tight({ - variable: "--font-inter-tight", subsets: ["latin"], - weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"], -}); - -const halant = Halant({ - variable: "--font-halant", subsets: ["latin"], - weight: ["300", "400", "500", "600", "700"], -}); - const inter = Inter({ variable: "--font-inter", subsets: ["latin"], }); +const openSans = Open_Sans({ + variable: "--font-open-sans", subsets: ["latin"], +}); + export const metadata: Metadata = { title: "Native Line - Build Native Apps Just Talk", description: "Create production-ready iOS, iPad, and Mac apps with conversational AI. No code, no compromise. Native Line turns your ideas into native Swift apps instantly.", keywords: "native app builder, iOS development, app generator, no-code, Swift, indie developers, app creation, AI, macOS", metadataBase: new URL("https://nativeline.app"), alternates: { @@ -50,7 +43,7 @@ export default function RootLayout({ {children} -- 2.49.1 From 5cbb095f7f1b97bbb4f45b817fe20c95ea34a194 Mon Sep 17 00:00:00 2001 From: bender Date: Tue, 3 Mar 2026 07:43:56 +0000 Subject: [PATCH 2/4] Update src/app/page.tsx --- src/app/page.tsx | 142 +++++++++++++++++++++++++++++------------------ 1 file changed, 88 insertions(+), 54 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 03132a0..6aeafa4 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -10,9 +10,34 @@ import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCa import FaqDouble from '@/components/sections/faq/FaqDouble'; import ContactFaq from '@/components/sections/contact/ContactFaq'; import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal'; -import { Sparkles, Zap, Lightbulb, Rocket, Users, Star, HelpCircle, Download } from 'lucide-react'; +import { Sparkles, Zap, Lightbulb, Rocket, Users, Star, HelpCircle, Download, Moon, Sun } from 'lucide-react'; +import { useState, useEffect } from 'react'; export default function LandingPage() { + const [isDarkMode, setIsDarkMode] = useState(false); + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + const saved = localStorage.getItem('native-line-dark-mode'); + if (saved !== null) { + setIsDarkMode(JSON.parse(saved)); + } else { + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + setIsDarkMode(prefersDark); + } + }, []); + + const toggleDarkMode = () => { + const newMode = !isDarkMode; + setIsDarkMode(newMode); + localStorage.setItem('native-line-dark-mode', JSON.stringify(newMode)); + }; + + if (!mounted) { + return null; + } + return (
@@ -123,8 +157,8 @@ export default function LandingPage() { tagIcon={Lightbulb} tagAnimation="slide-up" title="Democratizing App Development" - description="Native Line is built for indie developers, entrepreneurs, and creators who are frustrated with slow, expensive development processes." - subdescription="We believe anyone with an idea deserves the ability to ship production-quality native apps without hiring a team of engineers." + description="Native Line empowers indie developers, entrepreneurs, and creators to build production-quality native apps without weeks of development or expensive engineer teams." + subdescription="We believe anyone with an idea deserves the ability to ship—fast, beautifully, and natively." icon={Rocket} imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AQRMtx5ZUGLrwvjDcVIYHeaKiH/a-lifestyle-photo-showing-an-indie-devel-1772522999346-c2d8c8e5.png" imageAlt="Developer using Native Line" @@ -135,8 +169,8 @@ export default function LandingPage() {
@@ -162,7 +196,7 @@ export default function LandingPage() {
@@ -209,7 +243,7 @@ export default function LandingPage() {
@@ -253,8 +287,8 @@ export default function LandingPage() {
-- 2.49.1 From 0e7a21a3aa8f02925dd38fa630babd126185d865 Mon Sep 17 00:00:00 2001 From: bender Date: Tue, 3 Mar 2026 07:43:56 +0000 Subject: [PATCH 3/4] Update src/app/styles/variables.css --- src/app/styles/variables.css | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/app/styles/variables.css b/src/app/styles/variables.css index 0af5aa1..a6505af 100644 --- a/src/app/styles/variables.css +++ b/src/app/styles/variables.css @@ -2,23 +2,23 @@ /* Base units */ /* --vw is set by ThemeProvider */ - /* --background: #ffffff;; - --card: #f9f9f9;; - --foreground: #120a00e6;; - --primary-cta: #ff8c42;; - --secondary-cta: #f9f9f9;; - --accent: #e2e2e2;; - --background-accent: #c4c4c4;; */ + /* --background: #f5f3f0;;; + --card: #fffbf8;;; + --foreground: #2a2520;;; + --primary-cta: #c97d5c;;; + --secondary-cta: #f5f3f0;;; + --accent: #e8ddd3;;; + --background-accent: #d4c4b0;;; */ - --background: #ffffff;; - --card: #f9f9f9;; - --foreground: #120a00e6;; - --primary-cta: #ff8c42;; - --primary-cta-text: #ffffff;; - --secondary-cta: #f9f9f9;; - --secondary-cta-text: #120a00e6;; - --accent: #e2e2e2;; - --background-accent: #c4c4c4;; + --background: #f5f3f0;;; + --card: #fffbf8;;; + --foreground: #2a2520;;; + --primary-cta: #c97d5c;;; + --primary-cta-text: #ffffff;;; + --secondary-cta: #f5f3f0;;; + --secondary-cta-text: #2a2520;;; + --accent: #e8ddd3;;; + --background-accent: #d4c4b0;;; /* text sizing - set by ThemeProvider */ /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); -- 2.49.1 From 1443916bae96789de82bdd78f9c8278f3144839a Mon Sep 17 00:00:00 2001 From: bender Date: Tue, 3 Mar 2026 07:48:41 +0000 Subject: [PATCH 4/4] Update src/app/page.tsx --- src/app/page.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 6aeafa4..935b6f4 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -11,14 +11,13 @@ import FaqDouble from '@/components/sections/faq/FaqDouble'; import ContactFaq from '@/components/sections/contact/ContactFaq'; import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal'; import { Sparkles, Zap, Lightbulb, Rocket, Users, Star, HelpCircle, Download, Moon, Sun } from 'lucide-react'; -import { useState, useEffect } from 'react'; +import { useState, useEffect, useCallback } from 'react'; export default function LandingPage() { const [isDarkMode, setIsDarkMode] = useState(false); const [mounted, setMounted] = useState(false); useEffect(() => { - setMounted(true); const saved = localStorage.getItem('native-line-dark-mode'); if (saved !== null) { setIsDarkMode(JSON.parse(saved)); @@ -26,13 +25,16 @@ export default function LandingPage() { const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; setIsDarkMode(prefersDark); } + setMounted(true); }, []); - const toggleDarkMode = () => { - const newMode = !isDarkMode; - setIsDarkMode(newMode); - localStorage.setItem('native-line-dark-mode', JSON.stringify(newMode)); - }; + const toggleDarkMode = useCallback(() => { + setIsDarkMode((prevMode) => { + const newMode = !prevMode; + localStorage.setItem('native-line-dark-mode', JSON.stringify(newMode)); + return newMode; + }); + }, []); if (!mounted) { return null; -- 2.49.1