├── README.md ├── src ├── app │ ├── robots.txt │ ├── icon.png │ ├── favicon.ico │ ├── opengraph-image.png │ ├── (main) │ │ ├── (blue) │ │ │ ├── blogs │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── about-us │ │ │ │ ├── page.tsx │ │ │ │ └── _components │ │ │ │ │ ├── book.tsx │ │ │ │ │ ├── guidance.tsx │ │ │ │ │ ├── vision.tsx │ │ │ │ │ └── hero.tsx │ │ │ ├── our-process │ │ │ │ ├── _components │ │ │ │ │ ├── process │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── process-carousel.tsx │ │ │ │ │ ├── center-section.tsx │ │ │ │ │ ├── hero.tsx │ │ │ │ │ └── extra-copy.tsx │ │ │ │ └── page.tsx │ │ │ └── [page] │ │ │ │ └── page.tsx │ │ ├── (purple) │ │ │ ├── layout.tsx │ │ │ ├── blogs │ │ │ │ └── [slug] │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── _components │ │ │ │ │ └── hero.tsx │ │ │ │ │ └── page.tsx │ │ │ ├── _components │ │ │ │ ├── calculate-rates.tsx │ │ │ │ ├── copy-section.tsx │ │ │ │ ├── features.tsx │ │ │ │ ├── hero.tsx │ │ │ │ └── health-care-freedom.tsx │ │ │ └── page.tsx │ │ └── layout.tsx │ ├── api │ │ ├── disable-draft │ │ │ └── route.ts │ │ └── draft │ │ │ └── route.ts │ ├── (sanity) │ │ ├── layout.tsx │ │ └── studio │ │ │ └── [[...tool]] │ │ │ └── page.tsx │ ├── manifest.ts │ └── sitemap.ts ├── components │ ├── animation │ │ ├── index.ts │ │ ├── lottie-player.tsx │ │ └── animation.tsx │ ├── forms │ │ ├── contact-form │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── contact-form.action.ts │ │ │ └── contact-form.tsx │ │ └── newsletter-form │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── newsletter-form.action.ts │ │ │ └── newsletter-form.tsx │ ├── logo │ │ ├── index.ts │ │ ├── animated-logo.tsx │ │ └── logo.tsx │ ├── automatic-visual-editing.tsx │ ├── icons │ │ ├── angled-rectangle.tsx │ │ ├── shield.tsx │ │ ├── phone.tsx │ │ ├── mail.tsx │ │ ├── home.tsx │ │ ├── money.tsx │ │ └── calendly.tsx │ ├── ui │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── textarea.tsx │ │ ├── button.tsx │ │ ├── accordion.tsx │ │ └── form.tsx │ ├── prose.tsx │ ├── breadcrumbs.tsx │ ├── layout │ │ ├── nav.tsx │ │ ├── nav-wrapper.tsx │ │ ├── reach-out.tsx │ │ └── footer.tsx │ ├── provider.tsx │ ├── background.tsx │ ├── ui-new │ │ └── button.tsx │ ├── icons.tsx │ └── choose.tsx ├── sanity │ ├── schema.ts │ ├── lib │ │ ├── token.ts │ │ ├── image.ts │ │ └── client.ts │ ├── env.ts │ └── schemaTypes │ │ ├── blog.ts │ │ └── policy.ts ├── lib │ ├── utils.ts │ ├── constants.ts │ ├── pardot.ts │ ├── use-action-state.ts │ └── data.ts └── styles │ ├── index.ts │ └── globals.css ├── .eslintrc.json ├── public ├── logo.png ├── logo-blue.png └── logo-small-blue.png ├── .husky └── pre-commit ├── postcss.config.mjs ├── next-env.d.ts ├── prettier.config.js ├── lint-staged.config.js ├── sanity.cli.ts ├── components.json ├── next.config.mjs ├── .gitignore ├── env.txt ├── .env ├── tsconfig.json ├── package.json ├── sanity.config.ts ├── tailwind.config.ts └── sanity.types.ts /README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent: * 2 | Allow: * -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/animation/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./animation"; 2 | -------------------------------------------------------------------------------- /src/components/forms/contact-form/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./contact-form"; 2 | -------------------------------------------------------------------------------- /src/components/forms/newsletter-form/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./newsletter-form"; 2 | -------------------------------------------------------------------------------- /src/components/logo/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./logo"; 2 | export * from "./animated-logo"; 3 | -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arbab-Mustafa/app-client-new/HEAD/public/logo.png -------------------------------------------------------------------------------- /src/app/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arbab-Mustafa/app-client-new/HEAD/src/app/icon.png -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | bunx lint-staged 5 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arbab-Mustafa/app-client-new/HEAD/src/app/favicon.ico -------------------------------------------------------------------------------- /public/logo-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arbab-Mustafa/app-client-new/HEAD/public/logo-blue.png -------------------------------------------------------------------------------- /public/logo-small-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arbab-Mustafa/app-client-new/HEAD/public/logo-small-blue.png -------------------------------------------------------------------------------- /src/app/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arbab-Mustafa/app-client-new/HEAD/src/app/opengraph-image.png -------------------------------------------------------------------------------- /src/app/(main)/(blue)/blogs/page.tsx: -------------------------------------------------------------------------------- 1 | import { notFound } from "next/navigation"; 2 | 3 | export default function Page() { 4 | notFound(); 5 | return
hello
; 6 | } 7 | -------------------------------------------------------------------------------- /src/components/forms/newsletter-form/schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | export const schema = z.object({ 4 | email: z.string().email({ message: "Invalid email address" }), 5 | }); 6 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /src/sanity/schema.ts: -------------------------------------------------------------------------------- 1 | import { type SchemaTypeDefinition } from "sanity"; 2 | 3 | // import { blog } from "./schemaTypes/blog"; 4 | import { policy } from "./schemaTypes/policy"; 5 | 6 | export const schema: { types: SchemaTypeDefinition[] } = { 7 | // types: [blog, policy], 8 | types: [policy], 9 | }; 10 | -------------------------------------------------------------------------------- /src/app/api/disable-draft/route.ts: -------------------------------------------------------------------------------- 1 | import { draftMode } from "next/headers"; 2 | import { NextRequest, NextResponse } from "next/server"; 3 | 4 | export function GET(request: NextRequest) { 5 | draftMode().disable(); 6 | const url = new URL(request.nextUrl); 7 | return NextResponse.redirect(new URL("/", url.origin)); 8 | } 9 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | 8 | export function sleep(ms: number) { 9 | return new Promise((resolve) => setTimeout(resolve, ms)); 10 | } 11 | -------------------------------------------------------------------------------- /src/components/forms/contact-form/schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | export const schema = z.object({ 4 | name: z.string().min(2, "Name must be at least 2 characters long"), 5 | email: z.string().email({ message: "Invalid email address" }), 6 | message: z.string().min(10, "Message must be at least 10 characters long"), 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/constants.ts: -------------------------------------------------------------------------------- 1 | export type Theme = "purple" | "blue"; 2 | 3 | export const calendlyLink = 4 | "https://calendly.com/d/ckc4-qw4-yd7/ichras-com-intro"; 5 | 6 | export const baseUrl = process.env.NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL 7 | ? `https://${process.env.NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL}` 8 | : "http://localhost:3000"; 9 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | "@trivago/prettier-plugin-sort-imports", 4 | "prettier-plugin-tailwindcss", 5 | ], 6 | importOrder: ["^@/lib/(.*)$", "^@/components/(.*)$", "^@/(.*)$", "^[./]"], 7 | importOrderSeparation: true, 8 | importOrderSortSpecifiers: true, 9 | tailwindFunctions: ["cn", "cva"], 10 | }; 11 | -------------------------------------------------------------------------------- /src/app/(main)/(purple)/layout.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from "react"; 2 | 3 | import { Footer } from "@/components/layout/footer"; 4 | 5 | export default function Layout({ 6 | children, 7 | }: Readonly<{ 8 | children: ReactNode; 9 | }>) { 10 | return ( 11 | <> 12 | {children} 13 |