@appcorp/shadcn 2.0.1 → 2.0.2
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.
- package/components/ui/badge.d.ts +1 -1
- package/components/ui/button.d.ts +1 -1
- package/components/ui/resizable-impl.d.ts +1 -1
- package/package.json +1 -1
- package/templates/appcorp-v1/footer/bottom-bar.d.ts +6 -0
- package/templates/appcorp-v1/footer/bottom-bar.js +1 -0
- package/templates/appcorp-v1/footer/cta.d.ts +6 -0
- package/templates/appcorp-v1/footer/cta.js +1 -0
- package/templates/appcorp-v1/footer/footer-grid.d.ts +14 -0
- package/templates/appcorp-v1/footer/footer-grid.js +1 -0
- package/templates/appcorp-v1/footer/index.d.ts +3 -0
- package/templates/appcorp-v1/footer/index.js +1 -0
- package/templates/appcorp-v1/footer/newsletter.d.ts +11 -0
- package/templates/appcorp-v1/footer/newsletter.js +1 -0
- package/templates/appcorp-v1/footer/stats.d.ts +6 -0
- package/templates/appcorp-v1/footer/stats.js +1 -0
- package/templates/appcorp-v1/header/announcement-bar.d.ts +3 -0
- package/templates/appcorp-v1/header/announcement-bar.js +1 -0
- package/templates/appcorp-v1/header/dropdown-panel.d.ts +8 -0
- package/templates/appcorp-v1/header/dropdown-panel.js +2 -0
- package/templates/appcorp-v1/header/index.d.ts +12 -0
- package/templates/appcorp-v1/header/index.js +1 -0
- package/templates/appcorp-v1/header/mobile-menu.d.ts +14 -0
- package/templates/appcorp-v1/header/mobile-menu.js +1 -0
- package/templates/appcorp-v1/header/navigation-bar.d.ts +3 -0
- package/templates/appcorp-v1/header/navigation-bar.js +4 -0
- package/templates/appcorp-v1/header/social-button.d.ts +7 -0
- package/templates/appcorp-v1/header/social-button.js +1 -0
- package/templates/appcorp-v1/home.d.ts +3 -0
- package/templates/appcorp-v1/home.js +1 -0
- package/templates/data/appcorp-v1.d.ts +93 -0
- package/templates/data/appcorp-v1.js +1 -0
- package/templates/data/edupilotpro-v1.d.ts +33 -0
- package/templates/data/edupilotpro-v1.js +1 -0
- package/templates/data/school-v1.d.ts +328 -0
- package/templates/data/school-v1.js +1 -0
- package/templates/edupilotpro-v1/feature-card.d.ts +13 -0
- package/templates/edupilotpro-v1/feature-card.js +1 -0
- package/templates/edupilotpro-v1/mockups/dashboard-mockup.d.ts +3 -0
- package/templates/edupilotpro-v1/mockups/dashboard-mockup.js +1 -0
- package/templates/school-v1/footer.d.ts +3 -0
- package/templates/school-v1/footer.js +1 -0
- package/templates/school-v1/index.d.ts +18 -0
- package/templates/school-v1/index.js +1 -0
- package/templates/school-v1/navigation.d.ts +3 -0
- package/templates/school-v1/navigation.js +1 -0
- package/templates/school-v1/sections/about.d.ts +3 -0
- package/templates/school-v1/sections/about.js +1 -0
- package/templates/school-v1/sections/admissions.d.ts +3 -0
- package/templates/school-v1/sections/admissions.js +1 -0
- package/templates/school-v1/sections/contact.d.ts +3 -0
- package/templates/school-v1/sections/contact.js +1 -0
- package/templates/school-v1/sections/faqs.d.ts +3 -0
- package/templates/school-v1/sections/faqs.js +1 -0
- package/templates/school-v1/sections/hero.d.ts +3 -0
- package/templates/school-v1/sections/hero.js +1 -0
- package/templates/school-v1/sections/management.d.ts +3 -0
- package/templates/school-v1/sections/management.js +1 -0
- package/templates/school-v1/sections/policies.d.ts +3 -0
- package/templates/school-v1/sections/policies.js +1 -0
- package/templates/school-v1/sections/programs.d.ts +3 -0
- package/templates/school-v1/sections/programs.js +1 -0
- package/templates/school-v1/sections/testimonials.d.ts +3 -0
- package/templates/school-v1/sections/testimonials.js +1 -0
- package/templates/school-v1/sections/why-choose-us.d.ts +3 -0
- package/templates/school-v1/sections/why-choose-us.js +1 -0
package/components/ui/badge.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const badgeVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
4
|
+
variant?: "secondary" | "default" | "destructive" | "outline" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
6
|
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "link" | "
|
|
4
|
+
variant?: "link" | "secondary" | "default" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
5
5
|
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
3
3
|
declare const ResizablePanelGroup: ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => React.JSX.Element;
|
|
4
|
-
declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement | HTMLButtonElement |
|
|
4
|
+
declare const ResizablePanel: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement | HTMLButtonElement | HTMLObjectElement | HTMLSlotElement | HTMLStyleElement | HTMLTitleElement | HTMLInputElement | HTMLSpanElement | HTMLAnchorElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDivElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLFormElement | HTMLHeadingElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLImageElement | HTMLLabelElement | HTMLLegendElement | HTMLLIElement | HTMLLinkElement | HTMLMapElement | HTMLMetaElement | HTMLMeterElement | HTMLOListElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLParagraphElement | HTMLPreElement | HTMLProgressElement | HTMLScriptElement | HTMLSelectElement | HTMLSourceElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTableRowElement | HTMLTrackElement | HTMLUListElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
|
|
5
5
|
className?: string;
|
|
6
6
|
collapsedSize?: number | undefined;
|
|
7
7
|
collapsible?: boolean | undefined;
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import t from"next/link";export const BottomBar=({founded:a,year:r})=>e.createElement("div",{className:"relative mx-auto max-w-7xl px-6 py-5 md:px-10"},e.createElement("div",{className:"flex flex-col items-center justify-between gap-3 text-xs text-white/35 sm:flex-row"},e.createElement("p",null,"\xA9 ",r," App Corp Ltd. All rights reserved.",a?` Est. ${a}.`:""),e.createElement("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1"},e.createElement(t,{href:"/privacy",className:"hover:text-white/70 transition-colors"},"Privacy"),e.createElement(t,{href:"/terms",className:"hover:text-white/70 transition-colors"},"Terms"),e.createElement(t,{href:"/contact",className:"hover:text-white/70 transition-colors"},"Contact"),e.createElement("span",{className:"hidden sm:inline text-white/20"},"|"),e.createElement("span",{className:"hidden sm:inline"},"Crafted with care in London \u{1F1EC}\u{1F1E7}"))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import a from"next/link";import{ArrowRight as l}from"lucide-react";export const Cta=({href:t,label:r})=>e.createElement("div",{className:"relative border-y border-white/8"},e.createElement("div",{className:"mx-auto flex max-w-7xl flex-col items-center justify-between gap-5 px-6 py-8 text-center sm:flex-row sm:text-left md:px-10"},e.createElement("div",null,e.createElement("p",{className:"text-base font-semibold text-white"},"Ready to build something remarkable?"),e.createElement("p",{className:"mt-1 text-sm text-white/50"},"Tell us what you want to ship \u2014 we'll tell you exactly how we'd build it.")),e.createElement(a,{href:t,className:"inline-flex shrink-0 items-center gap-2 rounded-full bg-primary px-6 py-2.5 text-sm font-semibold text-primary-foreground shadow-lg transition-all hover:bg-primary/90 hover:shadow-primary/25"},r,e.createElement(l,{className:"h-4 w-4"}))));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FC } from "react";
|
|
2
|
+
import { FooterColumn, SocialLink } from "../../../templates/data/appcorp-v1";
|
|
3
|
+
export interface FooterGridProps {
|
|
4
|
+
description: string;
|
|
5
|
+
email: string;
|
|
6
|
+
location: string;
|
|
7
|
+
logo: string;
|
|
8
|
+
name: string;
|
|
9
|
+
phone: string;
|
|
10
|
+
socialLinks: SocialLink[];
|
|
11
|
+
tagline: string;
|
|
12
|
+
columns: FooterColumn[];
|
|
13
|
+
}
|
|
14
|
+
export declare const FooterGrid: FC<FooterGridProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import h from"next/image";import l from"next/link";import{SocialButton as d}from"../header/social-button";import{Mail as f,MapPin as g,Phone as E}from"lucide-react";import{Badge as w}from"../../../components/ui/badge";export const FooterGrid=({columns:s,description:i,email:r,location:c,logo:n,name:o,phone:m,socialLinks:x,tagline:p})=>e.createElement("div",{className:"relative mx-auto max-w-7xl px-6 pb-10 pt-16 md:px-10"},e.createElement("div",{className:"grid gap-12 lg:grid-cols-[1.6fr_repeat(4,1fr)]"},e.createElement("div",{className:"flex flex-col"},e.createElement(l,{href:"/",className:"mb-5 inline-flex items-center gap-2.5","aria-label":"App Corp home"},e.createElement(h,{alt:"App Corp icon",className:"h-9 w-9",height:36,src:n,width:36}),e.createElement("span",{className:"text-base font-semibold tracking-tight text-white"},o)),e.createElement("p",{className:"mb-4 text-sm font-medium leading-snug text-white/80"},p),e.createElement("p",{className:"mb-7 text-sm leading-relaxed text-white/45"},i),e.createElement("div",{className:"mb-7 flex items-center gap-2"},x.map(t=>e.createElement(d,Object.assign({key:t.label},t)))),e.createElement("div",{className:"space-y-2"},e.createElement("a",{href:`mailto:${r}`,className:"flex items-center gap-2 text-xs text-white/45 transition-colors hover:text-white/80"},e.createElement(f,{className:"h-3.5 w-3.5 shrink-0"}),r),m&&e.createElement("a",{href:`tel:${m}`,className:"flex items-center gap-2 text-xs text-white/45 transition-colors hover:text-white/80"},e.createElement(E,{className:"h-3.5 w-3.5 shrink-0"}),m),e.createElement("span",{className:"flex items-center gap-2 text-xs text-white/45"},e.createElement(g,{className:"h-3.5 w-3.5 shrink-0"}),c))),s.slice(0,4).map(t=>e.createElement("div",{key:t.heading},e.createElement("h3",{className:"mb-5 text-xs font-semibold uppercase tracking-widest text-white/40"},t.heading),e.createElement("ul",{className:"space-y-3"},t.links.map(a=>e.createElement("li",{key:a.label},e.createElement(l,{href:a.href,className:"group inline-flex items-center gap-1.5 text-sm text-white/60 transition-colors hover:text-white"},a.label,a.badge&&e.createElement(w,{className:"h-5 rounded-full bg-emerald-500/15 px-2 py-0 text-[10px] font-semibold text-emerald-400 border-0 whitespace-nowrap"},a.badge)))))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import e from"react";import{BottomBar as B}from"./bottom-bar";import{Cta as N}from"./cta";import{Newsletter as k}from"./newsletter";import{Stats as x}from"./stats";import{FooterGrid as S}from"./footer-grid";export const SiteFooter=({ctas:r,description:o,email:a,columns:l,founded:n,location:i,logo:m,name:s,newsletterBody:d,newsletterCta:c,newsletterDisclaimer:f,newsletterHeading:p,newsletterPlaceholder:u,phone:b,socialLinks:g,stats:h,tagline:w,badges:E,year:v})=>e.createElement("footer",{className:"relative overflow-hidden bg-gray-800 text-background"},e.createElement("div",{"aria-hidden":!0,className:"bg-dot-grid pointer-events-none absolute inset-0 opacity-[0.04]"}),e.createElement("div",{"aria-hidden":!0,className:"pointer-events-none absolute -top-40 left-1/4 h-112 w-md rounded-full bg-primary/10 blur-3xl"}),e.createElement(x,{footerStats:h}),e.createElement(S,{columns:l,description:o,email:a,location:i,logo:m,name:s,phone:b,socialLinks:g,tagline:w}),e.createElement(k,{newsletterBody:d,newsletterCta:c,newsletterDisclaimer:f,newsletterHeading:p,newsletterPlaceholder:u,techBadges:E}),r.filter(t=>t.enabled).sort((t,y)=>(t.order||0)-(y.order||0)).map(t=>e.createElement(N,{key:t.label,href:t.href,label:t.label})),e.createElement(B,{year:v,founded:n}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from "react";
|
|
2
|
+
import { TechBadge } from "../../../templates/data/appcorp-v1";
|
|
3
|
+
export interface NewsletterProps {
|
|
4
|
+
newsletterHeading: string;
|
|
5
|
+
newsletterBody: string;
|
|
6
|
+
newsletterPlaceholder: string;
|
|
7
|
+
newsletterCta: string;
|
|
8
|
+
newsletterDisclaimer: string;
|
|
9
|
+
techBadges: TechBadge[];
|
|
10
|
+
}
|
|
11
|
+
export declare const Newsletter: FC<NewsletterProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import{CheckCircle2 as o}from"lucide-react";export const Newsletter=({newsletterHeading:r,newsletterBody:a,newsletterPlaceholder:l,newsletterCta:m,newsletterDisclaimer:s,techBadges:i})=>e.createElement("div",{className:"relative border-y border-white/8"},e.createElement("div",{className:"mx-auto max-w-7xl px-6 py-10 md:px-10"},e.createElement("div",{className:"grid gap-10 md:grid-cols-2 md:items-center"},e.createElement("div",null,e.createElement("h3",{className:"mb-1 text-base font-semibold text-white"},r),e.createElement("p",{className:"mb-4 text-sm text-white/50"},a),e.createElement("form",{onSubmit:t=>t.preventDefault(),className:"flex max-w-sm gap-2"},e.createElement("input",{type:"email",placeholder:l,className:"flex-1 rounded-full border border-white/10 bg-white/5 px-4 py-2 text-sm text-white placeholder:text-white/30 outline-none focus:border-white/25 focus:ring-0"}),e.createElement("button",{type:"submit",className:"rounded-full bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground transition-all hover:bg-primary/90"},m)),e.createElement("p",{className:"mt-2 text-xs text-white/25"},s)),e.createElement("div",{className:"flex flex-wrap justify-start gap-2 md:justify-end"},i.filter(t=>t.enabled).sort((t,n)=>t.order-n.order).map(t=>e.createElement("span",{key:t.label,className:"inline-flex items-center gap-1.5 rounded-full border border-white/10 bg-white/5 px-3 py-1.5 text-xs font-medium text-white/60"},e.createElement(o,{className:"h-3 w-3 text-emerald-400"}),t.label))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";export const Stats=({footerStats:a})=>e.createElement("div",{className:"relative border-b border-white/8"},e.createElement("div",{className:"mx-auto grid max-w-7xl grid-cols-2 divide-x divide-white/8 px-6 md:grid-cols-4 md:px-10"},a.map(t=>e.createElement("div",{key:t.label,className:"flex flex-col items-center py-7 text-center"},e.createElement("span",{className:"text-2xl font-bold tracking-tight text-white md:text-3xl"},t.value),e.createElement("span",{className:"mt-1 text-xs text-white/50"},t.label)))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import o from"next/link";export const AnnouncementBar=({text:t,cta:n,href:r})=>e.createElement("div",{className:"fixed left-0 right-0 top-0 z-50 flex items-center justify-center gap-3 bg-foreground px-4 py-2 text-xs text-background/80"},e.createElement("span",null,t),e.createElement(o,{className:"font-semibold text-background underline-offset-2 hover:underline",href:r},n));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { NavItem } from "../../data/appcorp-v1";
|
|
3
|
+
interface DropdownPanelProps {
|
|
4
|
+
item: NavItem;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const DropdownPanel: ({ item, onClose }: DropdownPanelProps) => React.JSX.Element | null;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";import e from"react";import l from"next/link";import{Badge as m}from"../../../components/ui/badge";import{ArrowRight as d}from"lucide-react";import*as s from"lucide-react";export const DropdownPanel=({item:r,onClose:n})=>{if(!r.dropdown)return null;const o=r.dropdown.length>=4;return e.createElement("div",{className:`absolute top-full mt-2.5 rounded-2xl border border-border/50 bg-background/98 shadow-xl backdrop-blur-lg
|
|
2
|
+
${o?"left-1/2 w-155 -translate-x-1/2":"left-1/2 w-90 -translate-x-1/2"}`,style:{zIndex:100}},e.createElement("div",{className:"absolute -top-px left-1/2 h-px w-24 -translate-x-1/2 bg-linear-to-r from-transparent via-primary/60 to-transparent"}),e.createElement("div",{className:`p-3 ${o?"grid grid-cols-2 gap-1":"flex flex-col gap-1"}`},r.dropdown.filter(t=>t.enabled).sort((t,a)=>t.order-a.order).map(t=>{const a=s[t.icon]||s.Circle;return e.createElement(l,{key:t.href,href:t.href,onClick:n,className:"group flex items-start gap-3.5 rounded-xl p-3.5 transition-all duration-150 hover:bg-muted/60"},e.createElement("span",{className:"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-primary/8 transition-colors group-hover:bg-primary/14"},e.createElement(a,{className:"h-4.5 w-4.5 text-primary"})),e.createElement("span",{className:"min-w-0"},e.createElement("span",{className:"flex items-center gap-2 text-sm font-medium text-foreground"},t.label,t.badge&&e.createElement(m,{className:"h-5 rounded-full bg-emerald-500/15 px-2 py-0 text-[10px] font-semibold text-emerald-600 border-0 whitespace-nowrap"},t.badge)),e.createElement("span",{className:"mt-0.5 block text-xs leading-relaxed text-muted-foreground"},t.description)))})),e.createElement("div",{className:"border-t border-border/40 px-4 py-3 flex items-center justify-between"},e.createElement("span",{className:"text-xs text-muted-foreground"},"Not sure where to start?"),e.createElement(l,{href:"/contact-new",onClick:n,className:"inline-flex items-center gap-1 text-xs font-medium text-primary hover:underline"},"Talk to us ",e.createElement(d,{className:"h-3 w-3"}))))};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AnnouncementBar as AnnouncementBarProps, Cta, NavItem } from "../../data/appcorp-v1";
|
|
3
|
+
export interface SiteHeaderProps {
|
|
4
|
+
announcementBar: AnnouncementBarProps;
|
|
5
|
+
headerCta: Cta[];
|
|
6
|
+
logo: string;
|
|
7
|
+
navItems: NavItem[];
|
|
8
|
+
email: string;
|
|
9
|
+
phone: string;
|
|
10
|
+
location: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const SiteHeader: ({ announcementBar, headerCta, logo, navItems, email, phone, location, }: SiteHeaderProps) => React.JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import{AnnouncementBar as c}from"./announcement-bar";import{NavigationBar as n}from"./navigation-bar";export const SiteHeader=({announcementBar:t,headerCta:r,logo:a,navItems:o,email:m,phone:i,location:l})=>e.createElement(e.Fragment,null,e.createElement(c,{text:t.text,cta:t.cta,href:t.href}),e.createElement(n,{logo:a,navItems:o,headerCta:r,email:m,phone:i,location:l}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Cta, NavItem } from "../../data/appcorp-v1";
|
|
3
|
+
interface MobileMenuProps {
|
|
4
|
+
announcementVisible?: boolean;
|
|
5
|
+
headerCta: Cta[];
|
|
6
|
+
items: NavItem[];
|
|
7
|
+
logo: string;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
email: string;
|
|
10
|
+
phone: string;
|
|
11
|
+
location: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function MobileMenu({ headerCta, items, logo, onClose, email, phone, location, }: MobileMenuProps): React.JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{ArrowRight as h,ChevronDown as b,X as E}from"lucide-react";import N from"next/image";import l from"next/link";import e,{useState as y}from"react";import*as m from"lucide-react";import{Badge as w}from"../../../components/ui/badge";import{Button as v}from"../../../components/ui/button";import{MapPin as k,Mail as C,Phone as j}from"lucide-react";export function MobileMenu({headerCta:s,items:c,logo:i,onClose:n,email:d,phone:o,location:f}){const[p,u]=y(null),x=t=>u(a=>a===t?null:t);return e.createElement("div",{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background top-8"},e.createElement("div",{className:"flex h-16 items-center justify-between border-b border-border/40 px-6"},e.createElement(l,{href:"/",onClick:n,className:"flex items-center gap-2.5"},e.createElement(N,{src:i,alt:"App Corp icon",width:32,height:32,className:"h-8 w-8",priority:!0}),e.createElement("span",{className:"text-base font-semibold tracking-tight text-foreground"},"App Corp")),e.createElement("button",{onClick:n,"aria-label":"Close menu",className:"flex h-9 w-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"},e.createElement(E,{className:"h-5 w-5"}))),e.createElement("nav",{className:"flex-1 overflow-y-auto px-4 py-4"},c.map(t=>{const a=p===t.label;return t.dropdown?e.createElement("div",{key:t.label,className:"mb-1"},e.createElement("button",{onClick:()=>x(t.label),className:"flex w-full items-center justify-between rounded-xl px-4 py-3 text-sm font-medium text-foreground transition-colors hover:bg-muted"},t.label,e.createElement(b,{className:`h-4 w-4 text-muted-foreground transition-transform duration-200 ${a?"rotate-180":""}`})),a&&e.createElement("div",{className:"mb-2 mt-1 space-y-0.5 pl-2"},t.dropdown.map(r=>{const g=m[r.icon]||m.Circle;return e.createElement(l,{key:r.href,href:r.href,onClick:n,className:"group flex items-start gap-3 rounded-xl px-4 py-3 transition-colors hover:bg-muted/60"},e.createElement("span",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 transition-colors group-hover:bg-primary/15"},e.createElement(g,{className:"h-4 w-4 text-primary"})),e.createElement("span",null,e.createElement("span",{className:"flex items-center gap-2 text-sm font-medium text-foreground"},r.label,r.badge&&e.createElement(w,{className:"h-4 rounded-full bg-emerald-500/15 px-1.5 py-0 text-[10px] font-semibold text-emerald-600 border-0"},r.badge)),e.createElement("span",{className:"mt-0.5 line-clamp-1 text-xs text-muted-foreground"},r.description)))}))):e.createElement(l,{key:t.label,href:t.href,onClick:n,className:"flex items-center justify-between rounded-xl px-4 py-3 text-sm font-medium text-foreground transition-colors hover:bg-muted"},t.label,e.createElement(h,{className:"h-3.5 w-3.5 text-muted-foreground"}))})),e.createElement("div",{className:"border-t border-border/40 p-5 space-y-3"},e.createElement("div",{className:"flex items-center gap-2 text-xs text-muted-foreground"},e.createElement(C,{className:"h-3.5 w-3.5 shrink-0"}),e.createElement("span",null,d)),o&&e.createElement("div",{className:"flex items-center gap-2 text-xs text-muted-foreground"},e.createElement(j,{className:"h-3.5 w-3.5 shrink-0"}),e.createElement("span",null,o)),e.createElement("div",{className:"flex items-center gap-2 text-xs text-muted-foreground"},e.createElement(k,{className:"h-3.5 w-3.5 shrink-0"}),e.createElement("span",null,f)),e.createElement("div",{className:"flex flex-row gap-3 mt-1"},s.filter(t=>t.enabled).sort((t,a)=>t.order-a.order).map(t=>e.createElement(v,{asChild:!0,className:`flex-1 rounded-full ${t.type==="primary"?"bg-primary text-white":"bg-secondary text-foreground hover:bg-foreground hover:text-background"}`,key:t.href,size:"default"},e.createElement(l,{href:t.href},t.label))))))}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";import{ChevronDown as k,Menu as M}from"lucide-react";import C from"next/image";import i from"next/link";import{usePathname as D}from"next/navigation";import t,{useEffect as b,useRef as A,useState as m}from"react";import{Button as L}from"../../../components/ui/button";import{DropdownPanel as $}from"./dropdown-panel";import{MobileMenu as O}from"./mobile-menu";export const NavigationBar=({headerCta:d,logo:c,navItems:u,email:h,phone:g,location:x})=>{const v=D(),[w,E]=m(!1),[l,f]=m(!1),[y,a]=m(null),o=A(null);b(()=>{const e=()=>E(window.scrollY>20);return window.addEventListener("scroll",e,{passive:!0}),()=>window.removeEventListener("scroll",e)},[]),b(()=>(document.body.style.overflow=l?"hidden":"",()=>{document.body.style.overflow=""}),[l]);const p=e=>{o.current&&clearTimeout(o.current),a(e)},s=()=>{o.current=setTimeout(()=>a(null),150)},N=()=>{o.current&&clearTimeout(o.current)};return t.createElement("header",{className:`fixed left-0 right-0 z-40 transition-all duration-300 top-8
|
|
2
|
+
${w?"border-b border-border/40 bg-background/95 shadow-sm backdrop-blur-md":"bg-transparent"}`},t.createElement("div",{className:"relative mx-auto flex h-17 w-full max-w-350 items-center justify-between px-6 md:px-10"},t.createElement(i,{href:"/",className:"flex shrink-0 items-center gap-2.5","aria-label":"App Corp \u2014 home"},t.createElement(C,{src:c,alt:"App Corp icon",width:32,height:32,className:"h-8 w-8",priority:!0}),t.createElement("span",{className:"text-base font-semibold tracking-tight text-foreground"},"App Corp")),t.createElement("nav",{className:"absolute left-1/2 top-1/2 hidden -translate-x-1/2 -translate-y-1/2 lg:block","aria-label":"Main navigation"},t.createElement("ul",{className:"flex items-center gap-1"},u.filter(e=>e.enabled).sort((e,r)=>e.order-r.order).map(e=>{const r=!!e.dropdown,n=y===e.label;return t.createElement("li",{key:e.label,className:"relative"},r?t.createElement("button",{onMouseEnter:()=>p(e.label),onMouseLeave:s,onFocus:()=>p(e.label),onBlur:s,className:`inline-flex items-center gap-1.5 rounded-xl px-3.5 py-2 text-sm font-medium transition-colors
|
|
3
|
+
${n?"bg-muted text-foreground":"text-muted-foreground hover:bg-muted/70 hover:text-foreground"}`,"aria-expanded":n},e.label,t.createElement(k,{className:`h-3.5 w-3.5 transition-transform duration-200 ${n?"rotate-180":""}`})):t.createElement(i,{href:e.href,className:`inline-flex items-center gap-1.5 rounded-xl px-3.5 py-2 text-sm font-medium transition-colors
|
|
4
|
+
${v===e.href?"text-foreground bg-muted":"text-muted-foreground hover:bg-muted/70 hover:text-foreground"}`},e.label),r&&n&&t.createElement("div",{onMouseEnter:N,onMouseLeave:s},t.createElement($,{item:e,onClose:()=>a(null)})))}))),t.createElement("div",{className:"flex shrink-0 items-center gap-3"},d.filter(e=>e.enabled).sort((e,r)=>e.order-r.order).map(e=>t.createElement(L,{asChild:!0,className:`hidden rounded-full px-5 text-sm shadow-sm transition-all hover:bg-foreground/90 lg:inline-flex ${e.type==="primary"?"bg-primary text-white":"bg-secondary text-foreground hover:bg-foreground hover:text-background"}`,key:e.href,size:"default"},t.createElement(i,{href:e.href},e.label))),t.createElement("button",{onClick:()=>f(!0),"aria-label":"Open menu",className:"flex h-9 w-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground lg:hidden"},t.createElement(M,{className:"h-5 w-5"})),l&&t.createElement(O,{items:u,onClose:()=>f(!1),logo:c,headerCta:d,email:h,phone:g,location:x}))))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import*as r from"lucide-react";export const SocialButton=({label:t,href:o,icon:a})=>{const n=r[a]||r.Globe;return e.createElement("a",{"aria-label":t,className:"flex h-9 w-9 items-center justify-center rounded-full border border-white/10 bg-white/5 text-white/60 transition-all hover:border-white/25 hover:bg-white/10 hover:text-white",href:o,rel:"noopener noreferrer",target:"_blank"},e.createElement(n,{className:"h-4 w-4"}))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import{SiteFooter as o}from"./footer";import{SiteHeader as m}from"./header";export const AppCorpV1HomeTemplate=({siteHeader:t,siteFooter:r})=>e.createElement("div",null,e.createElement(m,Object.assign({},t)),e.createElement(o,Object.assign({},r)));
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export type AnnouncementBar = {
|
|
2
|
+
text: string;
|
|
3
|
+
cta: string;
|
|
4
|
+
href: string;
|
|
5
|
+
};
|
|
6
|
+
export interface NavDropdownItem {
|
|
7
|
+
badge?: string;
|
|
8
|
+
description: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
href: string;
|
|
11
|
+
icon: string;
|
|
12
|
+
label: string;
|
|
13
|
+
order: number;
|
|
14
|
+
}
|
|
15
|
+
export interface NavItem {
|
|
16
|
+
dropdown?: NavDropdownItem[];
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
href?: string;
|
|
19
|
+
label: string;
|
|
20
|
+
order: number;
|
|
21
|
+
}
|
|
22
|
+
export interface Cta {
|
|
23
|
+
href: string;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
label: string;
|
|
26
|
+
order: number;
|
|
27
|
+
type: "primary" | "secondary";
|
|
28
|
+
}
|
|
29
|
+
export interface FooterLinkItem {
|
|
30
|
+
label: string;
|
|
31
|
+
href: string;
|
|
32
|
+
badge?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FooterColumn {
|
|
35
|
+
heading: string;
|
|
36
|
+
links: FooterLinkItem[];
|
|
37
|
+
}
|
|
38
|
+
export interface SocialLink {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
href: string;
|
|
41
|
+
icon: string;
|
|
42
|
+
label: string;
|
|
43
|
+
order: number;
|
|
44
|
+
}
|
|
45
|
+
export interface FooterStat {
|
|
46
|
+
value: string;
|
|
47
|
+
label: string;
|
|
48
|
+
}
|
|
49
|
+
export interface TechBadge {
|
|
50
|
+
label: string;
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
order: number;
|
|
53
|
+
}
|
|
54
|
+
export interface HeaderProps {
|
|
55
|
+
navItems: NavItem[];
|
|
56
|
+
announcementBar: AnnouncementBar;
|
|
57
|
+
headerCta: Cta[];
|
|
58
|
+
logo: string;
|
|
59
|
+
email: string;
|
|
60
|
+
phone: string;
|
|
61
|
+
location: string;
|
|
62
|
+
}
|
|
63
|
+
export interface FooterProps {
|
|
64
|
+
badges: TechBadge[];
|
|
65
|
+
columns: FooterColumn[];
|
|
66
|
+
ctas: Cta[];
|
|
67
|
+
description: string;
|
|
68
|
+
email: string;
|
|
69
|
+
founded: string;
|
|
70
|
+
location: string;
|
|
71
|
+
logo: string;
|
|
72
|
+
name: string;
|
|
73
|
+
newsletterBody: string;
|
|
74
|
+
newsletterCta: string;
|
|
75
|
+
newsletterDisclaimer: string;
|
|
76
|
+
newsletterHeading: string;
|
|
77
|
+
newsletterPlaceholder: string;
|
|
78
|
+
phone: string;
|
|
79
|
+
socialLinks: SocialLink[];
|
|
80
|
+
stats: FooterStat[];
|
|
81
|
+
tagline: string;
|
|
82
|
+
year: string;
|
|
83
|
+
}
|
|
84
|
+
export interface AppCorpV1HomeTemplateProps {
|
|
85
|
+
siteHeader: HeaderProps;
|
|
86
|
+
siteFooter: FooterProps;
|
|
87
|
+
}
|
|
88
|
+
export declare const announcementBar: AnnouncementBar;
|
|
89
|
+
export declare const navItems: NavItem[];
|
|
90
|
+
export declare const headerCta: Cta[];
|
|
91
|
+
export declare const header: HeaderProps;
|
|
92
|
+
export declare const footer: FooterProps;
|
|
93
|
+
export declare const homePageData: AppCorpV1HomeTemplateProps;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const announcementBar={text:"Introducing AI Operating System for Business & School \u2014 our most powerful products yet.",cta:"Explore products \u2192",href:"/product/ai-os-business"},navItems=[{label:"Products",order:1,enabled:!0,dropdown:[{label:"AI Operating System for Business",description:"An end-to-end AI layer for your entire business \u2014 automate operations, unify data, and make decisions 10\xD7 faster.",href:"/product/ai-os-business",icon:"Building2",badge:"New",order:1,enabled:!0},{label:"AI Operating System for School",description:"Transform your institution with AI \u2014 personalised learning, automated admin, and real-time analytics for educators.",href:"/product/ai-os-school",icon:"GraduationCap",badge:"New",order:2,enabled:!0}]},{label:"Services",order:2,enabled:!0,dropdown:[{label:"AI & Machine Learning",description:"Predictive models, NLP pipelines, LLM integrations, and ML infrastructure built for production scale.",href:"/service/ai-machine-learning",icon:"Brain",order:1,enabled:!0},{label:"Custom Web Development",description:"Full-stack web applications engineered for performance, long-term maintainability, and global scale.",href:"/service/custom-web-development",icon:"Code2",order:2,enabled:!0},{label:"UI / UX Design",description:"Research-led design systems and interfaces that reduce churn, increase conversion, and delight users.",href:"/service/ui-ux-design",icon:"Palette",order:3,enabled:!0},{label:"Mobile App Development",description:"Cross-platform iOS and Android applications with native performance and offline-first architecture.",href:"/service/mobile-app-development",icon:"Smartphone",order:4,enabled:!0},{label:"MVP Development",description:"From validated idea to first paying customer in 8\u201316 weeks \u2014 scoped, engineered, and shipped on time.",href:"/service/mvp-development",icon:"Rocket",badge:"Fast-track",order:5,enabled:!0},{label:"SaaS Platform Development",description:"Multi-tenant SaaS platforms built for thousands of customers, millions of events, and ISO-27001 compliance.",href:"/service/saas-platform-development",icon:"Layers",order:6,enabled:!0}]},{label:"Work",order:3,enabled:!0,dropdown:[{label:"Case Studies",description:"Six in-depth breakdowns of real problems, real architecture decisions, and real measurable business outcomes.",href:"/case-study",icon:"BarChart3",order:1,enabled:!0},{label:"Portfolio",description:"500+ projects across fintech, healthcare, logistics, e-commerce, SaaS, and emerging technology.",href:"/portfolio",icon:"Briefcase",order:2,enabled:!0},{label:"Client Results",description:"$250M+ in measurable revenue generated for clients. See the numbers behind the outcomes we deliver.",href:"/case-study",icon:"TrendingUp",order:3,enabled:!0}]},{label:"Company",order:4,enabled:!0,dropdown:[{label:"About App Corp",description:"The team, the mission, the values, and why 200+ companies across 28 countries trust us with their critical builds.",href:"/about",icon:"Building2",order:1,enabled:!0},{label:"Blog & Engineering Insights",description:"Architecture deep-dives, engineering guides, product strategy, and technical commentary from our team.",href:"/blog",icon:"BookOpen",order:2,enabled:!0},{label:"Careers",description:"Join a team that ships ambitious products and grows fast. Senior engineering roles always open.",href:"/careers",icon:"Users",badge:"Hiring",order:3,enabled:!0}]},{label:"Contact",order:5,enabled:!0,href:"/contact"}],headerCta=[{label:"View our work",href:"/case-study",order:1,enabled:!0,type:"secondary"},{label:"Schedule a Call",href:"/contact-new",order:2,enabled:!0,type:"primary"}],header={navItems,announcementBar,headerCta,logo:"/appcorp-logo.svg",email:"info@appcorp.org",phone:"+92 349 4913126",location:"Lahore, Pakistan"},footer={name:"App Corp",tagline:"We build software that powers the next generation of market leaders.",description:"A full-service software engineering agency trusted by startups, scale-ups, and enterprises across the US, UK, and EU. From zero-to-one MVPs to enterprise platform rebuilds \u2014 we engineer measurable outcomes, not just code.",email:"info@appcorp.org",phone:"+92 349 4913126",location:"Lahore, Pakistan",founded:"2017",year:new Date().getFullYear().toString(),logo:"/appcorp-logo.svg",newsletterBody:"Architecture deep-dives, technology decisions, and product strategy from senior engineers who ship. No fluff.",newsletterCta:"Subscribe",newsletterDisclaimer:"No spam. Unsubscribe any time.",newsletterHeading:"Engineering insights, monthly.",newsletterPlaceholder:"your@email.com",ctas:[{label:"Schedule a Call",href:"/contact-new",type:"primary",enabled:!0,order:1},{label:"View our Work",href:"/case-study",type:"secondary",enabled:!1,order:2}],columns:[{heading:"Products",links:[{label:"AI OS for Business",href:"/product/ai-os-business",badge:"New"},{label:"AI OS for School",href:"/product/ai-os-school",badge:"New"}]},{heading:"Services",links:[{label:"AI & Machine Learning",href:"/service/ai-machine-learning"},{label:"Custom Web Development",href:"/service/custom-web-development"},{label:"UI / UX Design",href:"/service-detail/ui-ux-design"},{label:"Mobile App Development",href:"/service/mobile-app-development"},{label:"MVP Development",href:"/service/mvp-development",badge:"Fast-track"},{label:"SaaS Platform Development",href:"/service/saas-platform-development"}]},{heading:"Work",links:[{label:"Case Studies",href:"/case-study"},{label:"Portfolio",href:"/portfolio"},{label:"Client Results",href:"/case-study"},{label:"Industries We Serve",href:"/about"}]},{heading:"Company",links:[{label:"About Us",href:"/about"},{label:"Blog & Insights",href:"/blog"},{label:"Pricing",href:"/pricing"},{label:"Careers",href:"/careers",badge:"Hiring"},{label:"Contact Us",href:"/contact"}]},{heading:"Legal",links:[{label:"Privacy Policy",href:"/privacy"},{label:"Terms & Conditions",href:"/terms"},{label:"Cookie Policy",href:"/privacy"},{label:"Security",href:"/privacy"}]}],socialLinks:[{label:"LinkedIn",href:"https://linkedin.com/company/appcorp",icon:"Linkedin",enabled:!0,order:1},{label:"Twitter / X",href:"https://twitter.com/appcorp",icon:"Twitter",enabled:!0,order:2},{label:"GitHub",href:"https://github.com/appcorp",icon:"Github",enabled:!0,order:3},{label:"YouTube",href:"https://youtube.com/@appcorp",icon:"Youtube",enabled:!0,order:4}],badges:[{label:"AWS Partner",enabled:!0,order:1},{label:"ISO 27001 Aligned",enabled:!0,order:2},{label:"SOC 2 Ready",enabled:!0,order:3},{label:"GDPR Compliant",enabled:!0,order:4},{label:"PCI DSS Capable",enabled:!0,order:5}],stats:[{value:"200+",label:"Projects Shipped"},{value:"100+",label:"Clients Worldwide"},{value:"$50M+",label:"Client Revenue Generated"},{value:"98%",label:"Client Retention Rate"}]},homePageData={siteHeader:Object.assign({},header),siteFooter:Object.assign({},footer)};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface DashboardMockupProps {
|
|
2
|
+
domain: string;
|
|
3
|
+
enrollmentHeading: string;
|
|
4
|
+
enrollmentList: {
|
|
5
|
+
name: string;
|
|
6
|
+
class: string;
|
|
7
|
+
status: string;
|
|
8
|
+
}[];
|
|
9
|
+
items: {
|
|
10
|
+
icon: React.ElementType;
|
|
11
|
+
label: string;
|
|
12
|
+
active: boolean;
|
|
13
|
+
}[];
|
|
14
|
+
schoolName: string;
|
|
15
|
+
stats: {
|
|
16
|
+
label: string;
|
|
17
|
+
value: string;
|
|
18
|
+
color: string;
|
|
19
|
+
}[];
|
|
20
|
+
}
|
|
21
|
+
export declare const dashboardMockupMenuList: DashboardMockupProps;
|
|
22
|
+
export interface FeatureCardsProps {
|
|
23
|
+
items: {
|
|
24
|
+
icon: React.ElementType;
|
|
25
|
+
title: string;
|
|
26
|
+
description: string;
|
|
27
|
+
highlights: string[];
|
|
28
|
+
href: string;
|
|
29
|
+
accent: string;
|
|
30
|
+
bg: string;
|
|
31
|
+
}[];
|
|
32
|
+
}
|
|
33
|
+
export declare const featureCards: FeatureCardsProps;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{BarChart3 as e,BookOpen as t,Calendar as a,CreditCard as s,LayoutDashboard as r,Receipt as i,Shield as o,Users as n}from"lucide-react";export const dashboardMockupMenuList={domain:"subdomain.edupilotpro.com",items:[{icon:r,label:"Dashboard",active:!0},{icon:n,label:"Students",active:!1},{icon:t,label:"Courses",active:!1},{icon:a,label:"Attendance",active:!1},{icon:i,label:"Finance",active:!1},{icon:e,label:"Analytics",active:!1}],schoolName:"Greenwood Academy",stats:[{label:"Students",value:"412",color:"text-blue-600"},{label:"Teachers",value:"34",color:"text-purple-600"},{label:"Attendance",value:"97%",color:"text-green-700"},{label:"Fees Due",value:"$4.2k",color:"text-rose-600"}],enrollmentHeading:"Recent Enrollments",enrollmentList:[{name:"Aisha Patel",class:"Grade 7A",status:"Active"},{name:"Omar Faruk",class:"Grade 5B",status:"Active"},{name:"Lena M\xFCller",class:"Grade 9C",status:"Pending"}]},featureCards={items:[{icon:n,title:"AI Admission Assistant",description:"Automate your entire admissions pipeline. The AI Admission Assistant captures enquiries, collects documents, and moves students from application to enrolled \u2014 with no manual follow-up from your team.",highlights:["Digital admission forms & document collection","AI-guided enrolment workflows","Family portal with sibling linking","Searchable student & family database"],accent:"text-blue-700",bg:"bg-blue-50 dark:bg-blue-950/30",href:"/features/student-family"},{icon:t,title:"Academic Structure Engine",description:"Configure your school's full academic hierarchy \u2014 year groups, sections, subjects, courses \u2014 once. Every module (attendance, grades, timetables) inherits this structure automatically.",highlights:["Multi-level class & section hierarchy","Subject catalogue & course management","Teacher assignments & academic year config","Supports all curriculum frameworks"],accent:"text-purple-700",bg:"bg-purple-50 dark:bg-purple-950/30",href:"/features/academic-structure"},{icon:a,title:"AI Attendance Assistant",description:"Teachers mark an entire class present in one tap. The AI Attendance Assistant records every entry, detects chronic absence patterns, and automatically notifies parents \u2014 all without lifting a finger.",highlights:["One-tap bulk attendance marking","AI-powered absence pattern detection","Instant automated parent notifications","Conflict-free visual timetable builder"],accent:"text-green-700",bg:"bg-green-50 dark:bg-green-950/30",href:"/features/attendance-schedules"},{icon:e,title:"AI Reporting Assistant",description:"From test scores to polished report cards in one click. The AI Reporting Assistant calculates GPA, ranks students, flags underperformers, and generates print-ready PDFs at the end of every term.",highlights:["Automatic GPA & class rank calculation","AI-flagged underperformance alerts","One-click PDF report card generation","Multi-term performance trend analytics"],accent:"text-orange-700",bg:"bg-orange-50 dark:bg-orange-950/30",href:"/features/grades-assessments"},{icon:s,title:"AI Fee Reminder Automation",description:"Build your fee structures once. EduPilotPro auto-generates invoices every term, sends escalating payment reminders automatically, and keeps your outstanding fee dashboard updated in real time.",highlights:["Automated termly invoice generation","AI fee reminder sequences to parents","Real-time outstanding balance tracking","Discount, scholarship & exemption management"],accent:"text-rose-700",bg:"bg-rose-50 dark:bg-rose-950/30",href:"/features/financial-management"},{icon:o,title:"Smart Role-Based Access",description:"Every staff member, teacher, and parent sees exactly what they need. Five permission levels ensure data is protected, workflows are clean, and nothing leaks between roles.",highlights:["5-tier role hierarchy (Admin \u2192 Parent)","Staff & workspace user management","Audit-ready access and activity logs","Secure, GDPR-compliant authentication"],accent:"text-teal-700",bg:"bg-teal-50 dark:bg-teal-950/30",href:"/features/access-control"}]};
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
export type AboutData = {
|
|
2
|
+
badge?: string;
|
|
3
|
+
heading: string;
|
|
4
|
+
headingHighlight?: string;
|
|
5
|
+
lead: string;
|
|
6
|
+
paragraphs: Array<{
|
|
7
|
+
id: string;
|
|
8
|
+
content: string;
|
|
9
|
+
}>;
|
|
10
|
+
values: AboutValue[];
|
|
11
|
+
stats: AboutStat[];
|
|
12
|
+
milestones: AboutMilestone[];
|
|
13
|
+
};
|
|
14
|
+
export type AboutMilestone = {
|
|
15
|
+
year: string;
|
|
16
|
+
event: string;
|
|
17
|
+
};
|
|
18
|
+
export type AboutStat = {
|
|
19
|
+
value: string;
|
|
20
|
+
label: string;
|
|
21
|
+
color: string;
|
|
22
|
+
};
|
|
23
|
+
export type AboutValue = {
|
|
24
|
+
icon: string;
|
|
25
|
+
title: string;
|
|
26
|
+
description: string;
|
|
27
|
+
color: string;
|
|
28
|
+
iconColor: string;
|
|
29
|
+
borderColor: string;
|
|
30
|
+
};
|
|
31
|
+
export type AdmissionStep = {
|
|
32
|
+
icon: string;
|
|
33
|
+
step: string;
|
|
34
|
+
title: string;
|
|
35
|
+
description: string;
|
|
36
|
+
color: string;
|
|
37
|
+
};
|
|
38
|
+
export type AdmissionsData = {
|
|
39
|
+
admissionSteps: AdmissionStep[];
|
|
40
|
+
badge?: string;
|
|
41
|
+
ctaDownloadLabel: string;
|
|
42
|
+
ctaEmailHref: string;
|
|
43
|
+
ctaEmailLabel: string;
|
|
44
|
+
ctaPhoneHref: string;
|
|
45
|
+
ctaPhoneLabel: string;
|
|
46
|
+
documentsRequired: Array<{
|
|
47
|
+
id: string;
|
|
48
|
+
content: string;
|
|
49
|
+
}>;
|
|
50
|
+
documentsTitle?: string;
|
|
51
|
+
heading: string;
|
|
52
|
+
headingHighlight?: string;
|
|
53
|
+
keyDates: KeyDate[];
|
|
54
|
+
keyDatesTitle?: string;
|
|
55
|
+
lead: string;
|
|
56
|
+
stepsTitle?: string;
|
|
57
|
+
};
|
|
58
|
+
export type ContactData = {
|
|
59
|
+
badge: string;
|
|
60
|
+
heading: string;
|
|
61
|
+
headingHighlight?: string;
|
|
62
|
+
lead: string;
|
|
63
|
+
contactDetails: ContactDetail[];
|
|
64
|
+
socialLinks: SocialLink[];
|
|
65
|
+
mapEmbedSrc: string;
|
|
66
|
+
mapOpenLink: string;
|
|
67
|
+
ctaTitle: string;
|
|
68
|
+
ctaLead: string;
|
|
69
|
+
ctaBullets: string[];
|
|
70
|
+
ctaPrimaryLabel: string;
|
|
71
|
+
ctaPrimaryHref?: string;
|
|
72
|
+
ctaSecondaryLabel: string;
|
|
73
|
+
ctaSecondaryHref?: string;
|
|
74
|
+
};
|
|
75
|
+
export type ContactDetail = {
|
|
76
|
+
icon: string;
|
|
77
|
+
label: string;
|
|
78
|
+
value: string;
|
|
79
|
+
href: string | null;
|
|
80
|
+
color: string;
|
|
81
|
+
bg: string;
|
|
82
|
+
};
|
|
83
|
+
export type FAQ = {
|
|
84
|
+
id: string;
|
|
85
|
+
question: string;
|
|
86
|
+
answer: string;
|
|
87
|
+
icon: string;
|
|
88
|
+
category: string;
|
|
89
|
+
};
|
|
90
|
+
export type FAQsData = {
|
|
91
|
+
badge: string;
|
|
92
|
+
heading?: string;
|
|
93
|
+
headingHighlight?: string;
|
|
94
|
+
items: FAQ[];
|
|
95
|
+
lead?: string;
|
|
96
|
+
};
|
|
97
|
+
export type FooterData = {
|
|
98
|
+
address: string;
|
|
99
|
+
brandDescription: string;
|
|
100
|
+
brandFullName: string;
|
|
101
|
+
brandShortName: string;
|
|
102
|
+
emailHref: string;
|
|
103
|
+
emailLabel: string;
|
|
104
|
+
partnerLabel?: string;
|
|
105
|
+
partnerHref?: string;
|
|
106
|
+
phoneHref: string;
|
|
107
|
+
phoneLabel: string;
|
|
108
|
+
programs: Array<{
|
|
109
|
+
label: string;
|
|
110
|
+
id: string;
|
|
111
|
+
}>;
|
|
112
|
+
quickLinks: Array<{
|
|
113
|
+
href: string;
|
|
114
|
+
label: string;
|
|
115
|
+
enable: boolean;
|
|
116
|
+
order: number;
|
|
117
|
+
}>;
|
|
118
|
+
socialLinks: Array<{
|
|
119
|
+
name: "facebook" | "twitter" | "instagram" | "youtube";
|
|
120
|
+
href: string;
|
|
121
|
+
aria?: string;
|
|
122
|
+
enable: boolean;
|
|
123
|
+
order: number;
|
|
124
|
+
}>;
|
|
125
|
+
};
|
|
126
|
+
export type HeroData = {
|
|
127
|
+
slides: HeroSlide[];
|
|
128
|
+
stats: typeof heroStats;
|
|
129
|
+
};
|
|
130
|
+
export interface HeroSlide {
|
|
131
|
+
id: string;
|
|
132
|
+
badge: string;
|
|
133
|
+
headline: string;
|
|
134
|
+
subheadline: string;
|
|
135
|
+
description: string;
|
|
136
|
+
primaryCtaLabel: string;
|
|
137
|
+
primaryCtaHref: string;
|
|
138
|
+
secondaryCtaLabel: string;
|
|
139
|
+
secondaryCtaHref: string;
|
|
140
|
+
gradient: string;
|
|
141
|
+
accentColor: string;
|
|
142
|
+
pattern: string;
|
|
143
|
+
imageUrl: string;
|
|
144
|
+
}
|
|
145
|
+
export interface KeyDate {
|
|
146
|
+
date: string;
|
|
147
|
+
event: string;
|
|
148
|
+
status: "upcoming" | "open" | "closed";
|
|
149
|
+
}
|
|
150
|
+
export interface ManagementData {
|
|
151
|
+
badge?: string;
|
|
152
|
+
heading: string;
|
|
153
|
+
headingHighlight?: string;
|
|
154
|
+
lead: string;
|
|
155
|
+
team: ManagementMember[];
|
|
156
|
+
}
|
|
157
|
+
export interface ManagementMember {
|
|
158
|
+
avatar: string;
|
|
159
|
+
bio: string;
|
|
160
|
+
color: string;
|
|
161
|
+
id: string;
|
|
162
|
+
initials: string;
|
|
163
|
+
name: string;
|
|
164
|
+
qualifications: string;
|
|
165
|
+
title: string;
|
|
166
|
+
}
|
|
167
|
+
export type NavLink = {
|
|
168
|
+
href: string;
|
|
169
|
+
label: string;
|
|
170
|
+
enable: boolean;
|
|
171
|
+
order: number;
|
|
172
|
+
};
|
|
173
|
+
export type NavigationData = {
|
|
174
|
+
brandShortName: string;
|
|
175
|
+
brandFullName: string;
|
|
176
|
+
items: NavLink[];
|
|
177
|
+
ctaLabel: string;
|
|
178
|
+
ctaHref: string;
|
|
179
|
+
};
|
|
180
|
+
export interface PolicyCategory {
|
|
181
|
+
id: string;
|
|
182
|
+
label: string;
|
|
183
|
+
icon: string;
|
|
184
|
+
colorClass: string;
|
|
185
|
+
bgClass: string;
|
|
186
|
+
borderClass: string;
|
|
187
|
+
badgeClass: string;
|
|
188
|
+
bulletBg: string;
|
|
189
|
+
description: string;
|
|
190
|
+
sections: PolicySection[];
|
|
191
|
+
}
|
|
192
|
+
export interface PolicyPointSub {
|
|
193
|
+
text: string;
|
|
194
|
+
id: string;
|
|
195
|
+
}
|
|
196
|
+
export interface PolicyPoint {
|
|
197
|
+
text: string;
|
|
198
|
+
sub?: PolicyPointSub[];
|
|
199
|
+
id: string;
|
|
200
|
+
}
|
|
201
|
+
export interface PolicySection {
|
|
202
|
+
id: string;
|
|
203
|
+
title: string;
|
|
204
|
+
points: PolicyPoint[];
|
|
205
|
+
}
|
|
206
|
+
export interface Program {
|
|
207
|
+
ages: string;
|
|
208
|
+
borderColor: string;
|
|
209
|
+
color: string;
|
|
210
|
+
description: string;
|
|
211
|
+
highlights: string[];
|
|
212
|
+
icon: string;
|
|
213
|
+
lightColor: string;
|
|
214
|
+
textColor: string;
|
|
215
|
+
title: string;
|
|
216
|
+
}
|
|
217
|
+
export interface ProgramsData {
|
|
218
|
+
badge: string;
|
|
219
|
+
title: string;
|
|
220
|
+
lead: string;
|
|
221
|
+
programs: Program[];
|
|
222
|
+
}
|
|
223
|
+
export interface Testimonial {
|
|
224
|
+
id: string;
|
|
225
|
+
quote: string;
|
|
226
|
+
name: string;
|
|
227
|
+
role: string;
|
|
228
|
+
initials: string;
|
|
229
|
+
gradientFrom: string;
|
|
230
|
+
gradientTo: string;
|
|
231
|
+
}
|
|
232
|
+
export type TestimonialData = {
|
|
233
|
+
badge: string;
|
|
234
|
+
heading: string;
|
|
235
|
+
headingHighlight?: string;
|
|
236
|
+
items: Testimonial[];
|
|
237
|
+
lead: string;
|
|
238
|
+
};
|
|
239
|
+
export interface UniformSeason {
|
|
240
|
+
season: "Summer" | "Winter";
|
|
241
|
+
variants: UniformVariant[];
|
|
242
|
+
}
|
|
243
|
+
export interface UniformVairantItem {
|
|
244
|
+
id: string;
|
|
245
|
+
text: string;
|
|
246
|
+
}
|
|
247
|
+
export interface UniformVariant {
|
|
248
|
+
gender: "Boys" | "Girls";
|
|
249
|
+
classes: string;
|
|
250
|
+
items: UniformVairantItem[];
|
|
251
|
+
}
|
|
252
|
+
export type PoliciesHighlight = {
|
|
253
|
+
label: string;
|
|
254
|
+
value: string;
|
|
255
|
+
note: string;
|
|
256
|
+
};
|
|
257
|
+
export interface PoliciesData {
|
|
258
|
+
badge: string;
|
|
259
|
+
title: string;
|
|
260
|
+
paragraph: string;
|
|
261
|
+
lead: string;
|
|
262
|
+
highlights: PoliciesHighlight[];
|
|
263
|
+
categories: PolicyCategory[];
|
|
264
|
+
uniforms: UniformSeason[];
|
|
265
|
+
}
|
|
266
|
+
export type SocialIcon = "Facebook" | "Instagram" | "Twitter";
|
|
267
|
+
export type SocialLink = {
|
|
268
|
+
icon: SocialIcon;
|
|
269
|
+
href: string;
|
|
270
|
+
label: string;
|
|
271
|
+
};
|
|
272
|
+
export interface WhyUsFeature {
|
|
273
|
+
icon: string;
|
|
274
|
+
title: string;
|
|
275
|
+
description: string;
|
|
276
|
+
color: string;
|
|
277
|
+
}
|
|
278
|
+
export interface WhyUsData {
|
|
279
|
+
badge: string;
|
|
280
|
+
title: string;
|
|
281
|
+
lead: string;
|
|
282
|
+
paragraph: string;
|
|
283
|
+
features: WhyUsFeature[];
|
|
284
|
+
highlights: Array<{
|
|
285
|
+
content: string;
|
|
286
|
+
id: string;
|
|
287
|
+
}>;
|
|
288
|
+
}
|
|
289
|
+
export declare const navigationData: NavigationData;
|
|
290
|
+
export declare const footerData: FooterData;
|
|
291
|
+
export declare const aboutData: AboutData;
|
|
292
|
+
export declare const admissionSteps: AdmissionStep[];
|
|
293
|
+
export declare const keyDates: KeyDate[];
|
|
294
|
+
export declare const documentsRequired: {
|
|
295
|
+
id: string;
|
|
296
|
+
content: string;
|
|
297
|
+
}[];
|
|
298
|
+
export declare const admissionsData: AdmissionsData;
|
|
299
|
+
export declare const contactData: ContactData;
|
|
300
|
+
export declare const faqs: FAQ[];
|
|
301
|
+
export declare const faqsData: FAQsData;
|
|
302
|
+
export declare const heroSlides: HeroSlide[];
|
|
303
|
+
export declare const heroStats: {
|
|
304
|
+
value: string;
|
|
305
|
+
label: string;
|
|
306
|
+
icon: string;
|
|
307
|
+
}[];
|
|
308
|
+
export declare const heroData: HeroData;
|
|
309
|
+
export declare const managementTeam: ManagementMember[];
|
|
310
|
+
export declare const managementData: ManagementData;
|
|
311
|
+
export declare const programs: Program[];
|
|
312
|
+
export declare const programsData: ProgramsData;
|
|
313
|
+
export declare const testimonials: Testimonial[];
|
|
314
|
+
export declare const testimonialData: TestimonialData;
|
|
315
|
+
export declare const whyUsFeatures: WhyUsFeature[];
|
|
316
|
+
export declare const highlightBadges: {
|
|
317
|
+
content: string;
|
|
318
|
+
id: string;
|
|
319
|
+
}[];
|
|
320
|
+
export declare const whysUsData: WhyUsData;
|
|
321
|
+
export declare const uniformData: UniformSeason[];
|
|
322
|
+
export declare const policyCategories: PolicyCategory[];
|
|
323
|
+
export declare const policyHighlights: {
|
|
324
|
+
label: string;
|
|
325
|
+
value: string;
|
|
326
|
+
note: string;
|
|
327
|
+
}[];
|
|
328
|
+
export declare const policiesData: PoliciesData;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const navigationData={brandShortName:"LGGS",brandFullName:"Lahore Garrison Grammar School",items:[{href:"/",label:"Home",enable:!0,order:1},{href:"/campuses",label:"Campuses",enable:!0,order:2},{href:"/faculty",label:"Faculty",enable:!0,order:3},{href:"/faqs",label:"FAQs",enable:!0,order:7},{href:"/policies",label:"Policies",enable:!0,order:8},{href:"/contact",label:"Contact",enable:!0,order:9}],ctaLabel:"",ctaHref:""},footerData={brandShortName:"LGGS",brandFullName:"Lahore Garrison Grammar School",brandDescription:"Nurturing Young Minds, Building Bright Futures. A leading English-medium school committed to academic excellence and holistic development since 1990.",socialLinks:[{name:"facebook",href:"#",enable:!0,order:1},{name:"twitter",href:"#",enable:!0,order:2},{name:"instagram",href:"#",enable:!0,order:3},{name:"youtube",href:"#",enable:!0,order:4}],quickLinks:[{href:"#about",label:"About LGGS",enable:!0,order:1},{href:"#programs",label:"Our Programs",enable:!0,order:2},{href:"#admissions",label:"Admissions",enable:!0,order:3},{href:"#news",label:"News & Events",enable:!0,order:4},{href:"/blog",label:"School Blog",enable:!0,order:5},{href:"#contact",label:"Contact Us",enable:!0,order:6}],programs:[{label:"Playgroup & Nursery (Ages 2\u20134)",id:"1"},{label:"Primary School (Ages 5\u201310)",id:"2"},{label:"Middle School (Ages 11\u201314)",id:"3"},{label:"Secondary / Matriculation (Ages 15\u201316)",id:"4"},{label:"Boys Campus",id:"5"},{label:"Girls Campus",id:"6"}],address:"Awan Town, Multan Road, Lahore, Pakistan",phoneLabel:"042-35961207",phoneHref:"tel:+924235961207",emailLabel:"admin@lggs.edu.pk",emailHref:"mailto:admin@lggs.edu.pk",partnerLabel:"AppCorp",partnerHref:"https://appcorp.org"},aboutData={badge:"About LGGS",heading:"More Than a School \u2014",headingHighlight:"A Family",lead:"Since 1990, Lahore Garrison Grammar School has been a cornerstone of quality education in Lahore. We are not simply a place where children learn subjects \u2014 we are a community where young people discover who they are and who they can become.",paragraphs:[{content:"Lahore Garrison Grammar School was established in 1990 and is duly registered with the Directorate of Education Punjab, administered as a private institute affiliated with the Board of Intermediate & Secondary Education, Lahore. It emerged as one of the leading schools of quality education in the city.",id:"1"},{id:"2",content:"As a full-time English-medium morning school, LGGS is children's need-oriented \u2014 designed and operated with the sole aim of meeting all quality educational requirements in a comprehensive and compassionate way. With separate campuses for boys and girls, we create focused environments where every student can grow academically, socially, and personally."},{id:"3",content:"The school is widely recognised for its meritorious work in nurturing students at both social and intellectual levels. With the passage of time, LGGS has sustained consistent growth in size, and the quality of its results has been improving year after year \u2014 a testament to the dedication of our management, faculty, and students."}],values:[{icon:"star",title:"Academic Excellence",description:"For over three decades, LGGS has set the standard in Lahore for academic achievement \u2014 producing confident, capable graduates who are fully prepared for the next chapter of their lives.",color:"bg-yellow-50",iconColor:"text-yellow-600",borderColor:"border-yellow-100"},{icon:"heart",title:"Child-Centered Philosophy",description:"Every decision at LGGS begins and ends with the question: what's best for the child? From curriculum design to pastoral care, your child's happiness and growth guide everything we do.",color:"bg-rose-50",iconColor:"text-rose-600",borderColor:"border-rose-100"},{icon:"target",title:"Recognized Standards",description:"LGGS is registered with the Directorate of Education Punjab and affiliated with BISE Lahore \u2014 ensuring your child receives a recognized, credentialed education that opens every door.",color:"bg-blue-50",iconColor:"text-blue-600",borderColor:"border-blue-100"},{icon:"eye",title:"Safe, Focused Environments",description:"Our dedicated boys' and girls' campuses are carefully designed to provide distraction-free, nurturing spaces where every student can focus on learning and thriving.",color:"bg-green-50",iconColor:"text-green-600",borderColor:"border-green-100"}],stats:[{value:"34+",label:"Years of Service",color:"bg-blue-600"},{value:"BISE",label:"Lahore Affiliated",color:"bg-green-600"},{value:"2",label:"Dedicated Campuses",color:"bg-purple-600"},{value:"2000+",label:"Students Annually",color:"bg-orange-500"}],milestones:[{year:"1990",event:"LGGS founded with a vision for quality education"},{year:"2000",event:"Expanded to separate boys and girls campuses"},{year:"2010",event:"Introduced modern science and computer labs"},{year:"2024",event:"34+ years strong, 2000+ students thriving"}]},admissionSteps=[{icon:"file-text",step:"01",title:"Download the Prospectus",description:"Get our school prospectus from the website or visit our campus. It contains everything you need to know about LGGS \u2014 our programs, values, facilities, and fee structure.",color:"bg-blue-100 text-blue-700"},{icon:"calendar",step:"02",title:"Visit Our Campus",description:"We warmly invite you to tour our campus and meet our faculty. Seeing LGGS in action is the best way to feel the warmth and energy that makes our school truly special. Contact us to arrange your visit.",color:"bg-green-100 text-green-700"},{icon:"clipboard-list",step:"03",title:"Submit Your Application",description:"Complete and submit our admission form along with the required documents. Our admissions team will review your application and get in touch to confirm the next steps for your child's enrollment.",color:"bg-purple-100 text-purple-700"},{icon:"check-circle",step:"04",title:"Welcome to the LGGS Family!",description:"Once your application is confirmed, you will receive a formal offer letter. We will guide you through orientation, uniform requirements, and everything needed to ensure your child's first day at LGGS is wonderful.",color:"bg-yellow-100 text-yellow-700"}],keyDates=[{date:"Year-Round",event:"Admissions Accepted",status:"open"},{date:"March 2026",event:"New Academic Year Enrollment",status:"upcoming"},{date:"April 2026",event:"Campus Open Days",status:"upcoming"},{date:"May 2026",event:"Early Registration Discount Period",status:"upcoming"}],documentsRequired=[{id:"1",content:"Birth Certificate (Original + Copy)"},{id:"2",content:"Previous School Report Card"},{id:"3",content:"Student's Passport-size Photographs (x4)"},{id:"4",content:"Parent/Guardian's CNIC Copy"},{id:"5",content:"Transfer Certificate (if applicable)"},{id:"6",content:"Vaccination Record (for Nursery/KG)"}],admissionsData={badge:"Admissions",heading:"Begin Your Child's",headingHighlight:"Journey at LGGS",lead:"Joining the LGGS family is a simple, warm, and guided process. We are here to help every family find their path to enrolment.",stepsTitle:"Admissions Process",keyDatesTitle:"Key Dates 2025\u20132026",documentsTitle:"Documents Required",ctaDownloadLabel:"Download Prospectus",ctaPhoneLabel:"042-35961207",ctaPhoneHref:"tel:+924235961207",ctaEmailLabel:"admin@lggs.edu.pk",ctaEmailHref:"mailto:admin@lggs.edu.pk",admissionSteps:[{icon:"file-text",step:"01",title:"Download the Prospectus",description:"Get our school prospectus from the website or visit our campus. It contains everything you need to know about LGGS \u2014 our programs, values, facilities, and fee structure.",color:"bg-blue-100 text-blue-700"},{icon:"calendar",step:"02",title:"Visit Our Campus",description:"We warmly invite you to tour our campus and meet our faculty. Seeing LGGS in action is the best way to feel the warmth and energy that makes our school truly special. Contact us to arrange your visit.",color:"bg-green-100 text-green-700"},{icon:"clipboard-list",step:"03",title:"Submit Your Application",description:"Complete and submit our admission form along with the required documents. Our admissions team will review your application and get in touch to confirm the next steps for your child's enrollment.",color:"bg-purple-100 text-purple-700"},{icon:"check-circle",step:"04",title:"Welcome to the LGGS Family!",description:"Once your application is confirmed, you will receive a formal offer letter. We will guide you through orientation, uniform requirements, and everything needed to ensure your child's first day at LGGS is wonderful.",color:"bg-yellow-100 text-yellow-700"}],keyDates,documentsRequired},contactData={badge:"Contact Us",heading:"We Would Love to",headingHighlight:"Hear From You",lead:"Whether you want to arrange a campus visit, ask about admissions, or simply find out more about LGGS \u2014 our team is always glad to help.",contactDetails:[{icon:"MapPin",label:"Address",value:"Awan Town, Multan Road, Lahore",href:"https://www.google.com/maps/place/Lahore+Garrison+Grammar+School+(Girls+Campus)/@31.484634,74.254856,15z/data=!4m6!3m5!1s0x39190377d7bf124d:0x3c4510636938221c!8m2!3d31.4846344!4d74.2548563!16s%2Fg%2F11s0ktj4nh?hl=en&entry=ttu&g_ep=EgoyMDI2MDMwNC4xIKXMDSoASAFQAw%3D%3D",color:"text-blue-600",bg:"bg-blue-50"},{icon:"Phone",label:"Phone",value:"042-35961207",href:"tel:+924235961207",color:"text-green-600",bg:"bg-green-50"},{icon:"Mail",label:"Email",value:"admin@lggs.edu.pk",href:"mailto:admin@lggs.edu.pk",color:"text-purple-600",bg:"bg-purple-50"},{icon:"Clock",label:"Office Hours",value:"Mon \u2013 Sat: 8:00 AM \u2013 2:00 PM",href:null,color:"text-amber-600",bg:"bg-amber-50"}],socialLinks:[{icon:"Facebook",href:"https://www.facebook.com/LGGS.Lahore/",label:"Facebook"},{icon:"Instagram",href:"#",label:"Instagram"},{icon:"Twitter",href:"#",label:"Twitter / X"}],mapEmbedSrc:"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d13608.254854601666!2d74.24767285761207!3d31.494932487606487!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3919025657a33827%3A0x4c94438286d20882!2sLahore%20Garrison%20Grammar%20School%20(Boys%20Campus)!5e0!3m2!1sen!2s!4v1772957143271!5m2!1sen!2s",mapOpenLink:"https://maps.google.com/?q=Lahore+Garrison+Grammar+School+Awan+Town+Multan+Road+Lahore",ctaTitle:"Book a Campus Tour",ctaLead:"There is no better way to experience LGGS than visiting in person. Walk our campus, meet our teachers, and see the warm, nurturing environment your child will call home.",ctaBullets:["Meet our Principal and faculty","Tour both campuses","Ask your questions in person","Receive the full prospectus"],ctaPrimaryLabel:"Book a Visit",ctaSecondaryLabel:"Call Us Now",ctaSecondaryHref:"tel:+924235961207"},faqs=[{id:"admissions-process",category:"Admissions",icon:"calendar",question:"How do I apply for admission to Lahore Garrison Grammar School?",answer:"We understand that choosing the right school for your child is one of the most significant decisions you will make. At LGGS, we make the admissions process as smooth and welcoming as possible. You can download our application form from the website or visit either of our campuses in person. Our admissions team is available throughout the year to answer your questions, guide you through the forms, and ensure your child's transition to LGGS is as comfortable as possible."},{id:"age-groups",category:"Programs",icon:"users",question:"What age groups does LGGS cater to?",answer:"LGGS warmly welcomes children from the age of 2 onwards through our Playgroup program, all the way through to Matriculation at age 16. Every stage of development is carefully considered \u2014 from the gentle, play-based early years to the rigorous academic preparation for board examinations. We believe a seamless educational journey in one trusted institution gives your child the consistency and confidence they deserve."},{id:"curriculum",category:"Academics",icon:"book-open",question:"What curriculum and examination board does LGGS follow?",answer:"LGGS is affiliated with the Board of Intermediate & Secondary Education (BISE), Lahore, and is also registered with the Directorate of Education Punjab. Our curriculum is designed to meet all national standards while incorporating modern, child-centred pedagogical approaches. We are an English-medium school, ensuring your child develops strong language skills that open doors to both national and global opportunities."},{id:"campuses",category:"Facilities",icon:"shield",question:"Why does LGGS have separate campuses for boys and girls?",answer:"Providing separate campuses for boys and girls is a deliberate and thoughtful decision rooted in creating the ideal learning environment for every child. We believe students achieve their best when they feel comfortable, focused, and free from social distractions. Both campuses offer the same exceptional standard of education, facilities, and extracurricular activities \u2014 ensuring parity and excellence for all our students."},{id:"facilities",category:"Facilities",icon:"graduation-cap",question:"What facilities are available at the school?",answer:"Your child's growth and well-being are our highest priority. Our campuses feature modern classrooms, fully equipped science and computer laboratories, well-stocked libraries, sports facilities, and safe outdoor play areas. We continuously invest in upgrading our facilities so that every student has access to the resources they need to learn, explore, and thrive."},{id:"transport",category:"Support",icon:"bus",question:"Does LGGS provide school transportation?",answer:"We know that your child's safety during commute is a major concern, and we take it very seriously. LGGS offers reliable and safe transportation services covering major areas of Lahore. Our vehicles are maintained to the highest safety standards, operated by experienced drivers, and supervised by responsible staff members \u2014 so you can drop off your worry at the door and trust us completely with the rest."},{id:"fees",category:"Fees",icon:"credit-card",question:"What are the school fees, and are scholarships available?",answer:"LGGS is committed to making quality education accessible to as many families as possible. Our fee structure is thoughtfully priced to reflect the calibre of education and facilities provided. Detailed fee information is available in our prospectus, which can be downloaded from our website or collected from the school. We also offer merit-based scholarships and financial assistance for deserving students \u2014 because a child's potential should never be limited by financial circumstances."},{id:"extracurricular",category:"Activities",icon:"star",question:"What extracurricular activities and events does LGGS offer?",answer:"Life at LGGS extends far beyond the classroom. We host a vibrant calendar of events including Annual Sports Competitions, Science & Arts Exhibitions, Creative Writing competitions, Cultural Celebrations (Iqbal Day, National Day events), Story Telling contests, Drawing & Colouring competitions, and much more. These activities are designed to help students discover their passions, develop teamwork, and build the confidence and character that academic learning alone cannot provide."},{id:"safety",category:"Safety",icon:"heart",question:"How does LGGS ensure the safety and well-being of students?",answer:"Your child's safety is the absolute foundation upon which everything at LGGS is built. We maintain rigorous security measures at both campuses, with trained security staff, monitored entry and exit, and emergency response protocols. Beyond physical safety, our faculty is trained to identify and sensitively address emotional or social challenges that students may face \u2014 creating a school environment where every child feels genuinely seen, heard, and cared for."},{id:"parent-involvement",category:"Community",icon:"users",question:"How can parents stay involved in their child's education at LGGS?",answer:"At LGGS, we firmly believe that the partnership between school and home is one of the most powerful factors in a child's success. We encourage parents to attend school events, parent-teacher meetings, and open days. Our administration is always available to discuss your child's progress. We also share regular updates about school life, events, and achievements so that you always feel connected to your child's world at LGGS."}],faqsData={badge:"FAQs",items:faqs,heading:"Questions We",headingHighlight:"Hear Most",lead:"We know that choosing the right school raises many questions. Here are honest, detailed answers to the things families ask us most."},heroSlides=[{id:"welcome",badge:"\u{1F393} Established Since 1990",headline:"Where Every Child's",subheadline:"Potential Becomes Reality",description:"For over three decades, Lahore Garrison Grammar School has been nurturing young minds with compassion, excellence, and a deep commitment to shaping confident, capable human beings.",primaryCtaLabel:"Discover Our School",primaryCtaHref:"#about",secondaryCtaLabel:"Apply for Admission",secondaryCtaHref:"#admissions",gradient:"from-blue-950 via-blue-900 to-blue-800",accentColor:"text-yellow-400",pattern:"radial-gradient(circle at 70% 30%, rgba(255,255,255,0.08) 0%, transparent 60%)",imageUrl:"https://images.unsplash.com/photo-1580582932707-520aed937b7b?auto=format&fit=crop&w=1920&q=80"},{id:"academics",badge:"\u{1F4DA} Academic Excellence",headline:"Igniting Curiosity,",subheadline:"Building Brilliant Minds",description:"Our comprehensive English-medium curriculum, affiliated with BISE Lahore, delivers world-class education from Playgroup through Matriculation \u2014 preparing students for life's greatest opportunities.",primaryCtaLabel:"Explore Programs",primaryCtaHref:"#programs",secondaryCtaLabel:"Meet Our Team",secondaryCtaHref:"#management",gradient:"from-emerald-950 via-emerald-900 to-teal-800",accentColor:"text-yellow-300",pattern:"radial-gradient(circle at 30% 70%, rgba(255,255,255,0.08) 0%, transparent 60%)",imageUrl:"https://images.unsplash.com/photo-1427504494785-3a9ca7044f45?auto=format&fit=crop&w=1920&q=80"},{id:"community",badge:"\u{1F91D} A Family of Achievers",headline:"Two Campuses,",subheadline:"One Shared Dream",description:"With dedicated campuses for boys and girls, we create safe, focused, and inspiring learning environments where every student feels seen, valued, and empowered to excel.",primaryCtaLabel:"Why Choose LGGS",primaryCtaHref:"#why-choose-us",secondaryCtaLabel:"Read Testimonials",secondaryCtaHref:"#testimonials",gradient:"from-purple-950 via-purple-900 to-violet-800",accentColor:"text-yellow-300",pattern:"radial-gradient(circle at 80% 50%, rgba(255,255,255,0.08) 0%, transparent 60%)",imageUrl:"https://images.unsplash.com/photo-1509062522246-3755977927d7?auto=format&fit=crop&w=1920&q=80"},{id:"admissions",badge:"\u2705 Admissions Open 2025\u20132026",headline:"Begin Your Child's",subheadline:"Journey With Us Today",description:"Join thousands of families who trust LGGS with their most precious gift. Our doors are open \u2014 let's walk the path to a bright future together. Applications are welcomed year-round.",primaryCtaLabel:"Apply Now",primaryCtaHref:"#admissions",secondaryCtaLabel:"Contact Admissions",secondaryCtaHref:"#contact",gradient:"from-amber-950 via-orange-900 to-red-900",accentColor:"text-yellow-300",pattern:"radial-gradient(circle at 20% 20%, rgba(255,255,255,0.08) 0%, transparent 60%)",imageUrl:"https://images.unsplash.com/photo-1523240795612-9a054b0db644?auto=format&fit=crop&w=1920&q=80"}],heroStats=[{value:"34+",label:"Years of Excellence",icon:"award"},{value:"2000+",label:"Students Thriving",icon:"users"},{value:"2",label:"Dedicated Campuses",icon:"building"},{value:"100%",label:"Committed to Your Child",icon:"heart"}],heroData={slides:heroSlides,stats:heroStats},managementTeam=[{avatar:"/zulfiqar-ali.jpg",bio:"Mr. Zulfiqar Ali brings over five decades of exceptional professional experience to the helm of LGGS. He joined the National Fertilizer Corporation in 1969 and served at various senior management levels, playing an instrumental role in the construction and operation of the largest urea plant at Pak Saudi Fertilizer. His extraordinary vision and leadership continue to shape LGGS into one of Lahore's most respected educational institutions.",color:"from-blue-900 to-blue-700",id:"chairman",initials:"ZA",name:"Mr. Zulfiqar Ali",qualifications:"50+ Years of Distinguished Service",title:"Chairman"},{avatar:"/salma-awan.jpg",bio:"Ms. Salma Awan is a woman of extraordinary talents and accomplishments. As an educator and prolific writer, she brings a unique blend of academic depth and creative vision to LGGS. She has authored seven novels, five short story books, and eleven travelogues. With her Masters from Dhaka University, she leads the school with warmth, wisdom, and an unwavering commitment to student excellence.",color:"from-purple-900 to-purple-700",id:"principal",initials:"SA",name:"Ms. Salma Awan",qualifications:"Masters \u2014 Dhaka University | Author & Educationist",title:"Principal"},{avatar:"/ghazanfar-ali.jpg",bio:"Mr. Ghazanfar Ali holds a Masters degree in Finance from the prestigious Australian National University. After completing his postgraduate studies, he worked for twelve years in the investment banking industry, holding senior advisory positions at KASB Securities Ltd. His international perspective and passion for youth development make him an invaluable pillar of the LGGS leadership team.",color:"from-green-900 to-green-700",id:"director-hr",initials:"GA",name:"Mr. Ghazanfar Ali",qualifications:"Masters Finance \u2014 Australian National University",title:"Director, HR & Students Affairs"},{avatar:"/ali.jpg",bio:"Mr. Ali is a qualified lawyer who completed his LLB from the University of the Punjab. He expertly oversees all administrative and legal affairs at LGGS, ensuring that the school operates with transparency, compliance, and institutional integrity. His meticulous approach provides the structural backbone that allows the academic mission of LGGS to flourish without interruption.",color:"from-slate-800 to-slate-600",id:"director-admin",initials:"AL",name:"Mr. Ali",qualifications:"LLB \u2014 University of the Punjab",title:"Director, Admin & Legal Affairs"},{avatar:"/saadia-shagufta.jpg",bio:"Ms. Saadia Shagufta holds a Masters in English Literature from the University of the Punjab. As Director of Academic Affairs, she has been a tireless champion of curriculum modernization, continuously driving the school toward progressive, student-responsive teaching practices. Her enormous contributions to LGGS have elevated academic standards and inspired both teachers and students to reach new heights of excellence.",color:"from-rose-900 to-rose-700",id:"director-academic",initials:"SS",name:"Ms. Saadia Shagufta",qualifications:"Masters English Literature \u2014 University of the Punjab",title:"Director, Academic Affairs"}],managementData={badge:"Leadership",heading:"The Dedicated Team",headingHighlight:"Behind LGGS",lead:"Our school is guided by a passionate, experienced leadership team committed to maintaining the highest standards of education, care, and institutional integrity.",team:managementTeam},programs=[{icon:"baby",title:"Playgroup & Nursery",ages:"Ages 2\u20134",color:"bg-pink-500",lightColor:"bg-pink-50",textColor:"text-pink-700",borderColor:"border-pink-200",description:"Your child's first school experience is precious. Our Playgroup and Nursery programs provide a wonderfully gentle introduction to learning \u2014 through play, creative exploration, and loving interaction, laying the foundation for a lifelong love of learning.",highlights:["Play-based discovery learning","Social & emotional development","Language & communication","Creative arts & crafts","Safe, stimulating environment"]},{icon:"book-open",title:"Primary Education",ages:"Ages 5\u201310",color:"bg-blue-500",lightColor:"bg-blue-50",textColor:"text-blue-700",borderColor:"border-blue-200",description:"Strong foundations are everything. Our Primary section builds essential skills in English, Urdu, Mathematics, Science, and Social Studies with a curriculum that balances academic rigour with creative exploration \u2014 sparking curiosity in every young mind.",highlights:["English & Urdu medium education","Core subject mastery","Science experiments & discovery","Arts, crafts & physical education","Character & values formation"]},{icon:"user",title:"Middle School",ages:"Ages 11\u201314",color:"bg-green-500",lightColor:"bg-green-50",textColor:"text-green-700",borderColor:"border-green-200",description:"The middle years are a time of discovery, growth, and building identity. Our Middle School program challenges students academically while offering the pastoral care and mentorship they need to navigate this transformative stage with confidence.",highlights:["Advanced subject curriculum","Critical thinking development","Leadership opportunities","Extracurricular activities","Dedicated pastoral support"]},{icon:"graduation-cap",title:"Secondary & Matriculation",ages:"Ages 15\u201316",color:"bg-purple-500",lightColor:"bg-purple-50",textColor:"text-purple-700",borderColor:"border-purple-200",description:"The culmination of the LGGS journey \u2014 our Secondary program prepares students for BISE Lahore board examinations with rigorous academics, personalized guidance, and the skills needed to unlock their chosen path in life.",highlights:["BISE Lahore board preparation","Science & Arts streams","Career counselling & guidance","University readiness programs","Board exam success strategies"]}],programsData={badge:"Our Programs",lead:"From a child's very first steps into learning all the way to board examinations, LGGS provides nurturing, rigorous, and joyful education at every stage.",programs,title:"A Complete Educational Journey"},testimonials=[{id:"1",quote:"LGGS has been the best decision we made for our son. The teachers here are not just educators \u2014 they are mentors who genuinely care about each child. His confidence has grown tremendously and his results speak for themselves.",name:"Ahmed Raza",role:"Parent, Grade 8 Student",initials:"AR",gradientFrom:"from-blue-600",gradientTo:"to-blue-800"},{id:"2",quote:"When I moved to Lahore, I was worried about finding a school that would make my daughter feel welcomed and safe. LGGS exceeded every expectation. The separate campus for girls is such a thoughtful decision \u2014 she thrives there.",name:"Fatima Malik",role:"Parent, Grade 6 Student",initials:"FM",gradientFrom:"from-purple-600",gradientTo:"to-purple-800"},{id:"3",quote:"I completed my Matriculation from LGGS in 2022 and it shaped everything I am today. The discipline, the values, and the incredible faculty gave me not just knowledge but purpose. I am so proud to call myself an LGGS graduate.",name:"Bilal Hussain",role:"Former Student, Class of 2022",initials:"BH",gradientFrom:"from-green-600",gradientTo:"to-emerald-800"},{id:"4",quote:"The extracurricular activities at LGGS are outstanding. My children participate in the Sports Day, Arts Exhibition, and cultural events every year. Watching them perform and compete with such confidence fills my heart with pride.",name:"Nadia Iqbal",role:"Parent of Two LGGS Students",initials:"NI",gradientFrom:"from-rose-600",gradientTo:"to-pink-800"},{id:"5",quote:"LGGS prepared me so thoroughly for my board exams that I achieved A-grade results in all subjects. The teachers go above and beyond during examination season. I truly felt the school cared about my success as much as I did.",name:"Sara Tariq",role:"Former Student, Matriculation Batch 2023",initials:"ST",gradientFrom:"from-amber-600",gradientTo:"to-orange-700"},{id:"6",quote:"What sets LGGS apart is its commitment to holistic development. My son didn't just improve academically \u2014 he became a better communicator, a leader, and a responsible young person. That is what great education looks like.",name:"Dr. Usman Shah",role:"Parent, Grade 10 Student",initials:"US",gradientFrom:"from-teal-600",gradientTo:"to-teal-800"}],testimonialData={badge:"Testimonials",heading:"Trusted by",headingHighlight:"Families Across Lahore",lead:"Don't just take our word for it \u2014 hear from the parents and alumni who have experienced the LGGS difference firsthand.",items:testimonials},whyUsFeatures=[{icon:"award",title:"34+ Years of Proven Excellence",description:"Since 1990, LGGS has consistently delivered academic results that parents and students trust. Our history of excellence is not just our past \u2014 it is our promise to you.",color:"text-yellow-600"},{icon:"shield",title:"Safe, Separate Campuses",description:"Our dedicated campuses for boys and girls are designed to create focused, comfortable learning environments where every student feels secure and valued.",color:"text-blue-600"},{icon:"book-open",title:"BISE Affiliated Academics",description:"Officially affiliated with the Board of Intermediate & Secondary Education, Lahore, ensuring your child receives standardized, recognized, and high-quality education.",color:"text-green-600"},{icon:"users",title:"Dedicated, Caring Faculty",description:"Our experienced educators go beyond teaching \u2014 they mentor, inspire, and personally invest in each child's growth, ensuring no student is left behind or overlooked.",color:"text-purple-600"},{icon:"heart",title:"Holistic Child Development",description:"We nurture the whole child \u2014 academic ability, emotional intelligence, social confidence, and moral character \u2014 because true success is about much more than grades.",color:"text-red-600"},{icon:"globe",title:"English Medium Excellence",description:"Our English-medium instruction opens global doors, giving your child the communication skills and international perspective required in today's connected world.",color:"text-teal-600"},{icon:"star",title:"Vibrant Events & Activities",description:"From sporting competitions and science exhibitions to creative writing contests and cultural celebrations \u2014 LGGS life is rich, dynamic, and deeply memorable.",color:"text-orange-600"},{icon:"zap",title:"Consistent Improvement Culture",description:"Year after year, results improve. Our commitment to modernizing the curriculum, upgrading facilities, and developing our faculty means your child always gets better.",color:"text-indigo-600"}],highlightBadges=[{content:"34+ Years of Service",id:"1"},{content:"Registered with Directorate of Education Punjab",id:"2"},{content:"BISE Lahore Affiliated",id:"3"},{content:"Boys & Girls Campuses",id:"4"},{content:"English Medium School",id:"5"}],whysUsData={badge:"Why Choose LGGS?",features:whyUsFeatures,highlights:highlightBadges,lead:"Choose LGGS.",paragraph:"Every parent wants the very best for their child. At Lahore Garrison Grammar School, we have built an institution where excellence is the baseline \u2014 not the exception.",title:"Choose Excellence."},uniformData=[{season:"Summer",variants:[{gender:"Boys",classes:"Class I \u2013 V",items:[{id:"1",text:"White half-sleeves shirt with grey school insignia on pocket"},{id:"2",text:"Grey tropical shorts / pants"},{id:"3",text:"Black shoes"},{id:"4",text:"Grey socks"}]},{gender:"Girls",classes:"Class I \u2013 V",items:[{id:"1",text:"Red half-sleeves frock with red school insignia"},{id:"2",text:"White tight / shalwar"},{id:"3",text:"Black shoes"},{id:"4",text:"White socks"}]},{gender:"Boys",classes:"Class VI onwards",items:[{id:"1",text:"White half-sleeves shirt with grey school insignia on pocket"},{id:"2",text:"Grey tropical pants"},{id:"3",text:"Grey socks"},{id:"4",text:"Black shoes (no metal buckle)"},{id:"5",text:"Black belt with school logo"}]},{gender:"Girls",classes:"Class VI onwards",items:[{id:"1",text:"Red full-sleeves kameez with collar and red logo"},{id:"2",text:"Red sash"},{id:"3",text:"White socks"},{id:"4",text:"Black shoes"},{id:"5",text:"For hijab: red scarf without lace"}]}]},{season:"Winter",variants:[{gender:"Boys",classes:"Class I \u2013 V",items:[{id:"1",text:"White full-sleeves shirt with grey school insignia"},{id:"2",text:"Grey steel colour pocket trousers"},{id:"3",text:"Grey sleeveless sweater"},{id:"4",text:"Navy blue blazer with badge pocket"},{id:"5",text:"Grey socks"},{id:"6",text:"Black shoes without laces (no joggers, boots, or metal buckle)"}]},{gender:"Girls",classes:"Class I \u2013 V",items:[{id:"1",text:"Red full-sleeves frock with red school insignia"},{id:"2",text:"White tight / shalwar"},{id:"3",text:"Navy blue blazer with badge pocket"},{id:"4",text:"White socks"},{id:"5",text:"Black shoes"}]},{gender:"Boys",classes:"Class VI onwards",items:[{id:"1",text:"White full-sleeves shirt with grey school insignia on pocket"},{id:"2",text:"Grey pants with pockets"},{id:"3",text:"Grey sleeveless sweater"},{id:"4",text:"Navy blue blazer with badge pocket"},{id:"5",text:"Grey socks"},{id:"6",text:"Black shoes (without metal buckle)"},{id:"7",text:"Black belt with school logo"}]},{gender:"Girls",classes:"Class VI onwards",items:[{id:"1",text:"Red full-sleeves kameez with collar and red logo"},{id:"2",text:"Red sash"},{id:"3",text:"Red sleeveless sweater"},{id:"4",text:"Navy blue blazer with badge pocket"},{id:"5",text:"White socks"},{id:"6",text:"Black shoes"},{id:"7",text:"For hijab: red scarf without lace"}]}]}],policyCategories=[{id:"overview",label:"Overview",icon:"book-open",colorClass:"text-blue-700",bgClass:"bg-blue-50",borderClass:"border-blue-200",badgeClass:"bg-blue-100 text-blue-700",bulletBg:"bg-blue-700",description:"School charter, definitions, and foundational rules",sections:[{id:"preamble",title:"Preamble",points:[{id:"preamble-1",text:"These rules apply to all students enrolled at LGGS, including any future branch.",sub:[]},{id:"preamble-2",text:"Management reserves the right to modify, cancel, or amend any rules at any time.",sub:[]},{id:"preamble-3",text:"The Managing Body is the final authority on interpretation of all rules, and its decisions are binding on all students.",sub:[]},{id:"preamble-4",text:"All rules should be read in conjunction with existing and future rules applicable to the school.",sub:[]}]},{id:"definitions",title:"Definitions",points:[{id:"definitions-1",text:'"The School" means Lahore Garrison Grammar School or any of its branches.',sub:[]},{id:"definitions-2",text:'"Management" means the managing body comprising duly constituted members.',sub:[]},{id:"definitions-3",text:'"Competent Authority" means the Principal, Administrator, or any officer delegated relevant powers.',sub:[]},{id:"definitions-4",text:'"Regular Student" means a student enrolled until completion of secondary-level education (Matriculation).',sub:[]}]}]},{id:"admissions",label:"Admissions",icon:"user-plus",colorClass:"text-emerald-700",bgClass:"bg-emerald-50",borderClass:"border-emerald-200",badgeClass:"bg-emerald-100 text-emerald-700",bulletBg:"bg-emerald-700",description:"Admission process, eligibility, and transfer rules",sections:[{id:"admission-policy",title:"Admission Policy",points:[{id:"admission-policy-1",text:"Academic session commences in March each year.",sub:[]},{id:"admission-policy-2",text:"Admission to Class I\u2013VIII is based on merit and a written examination in English, Maths, Urdu, and Science.",sub:[]},{id:"admission-policy-3",text:"Shortlisted students are called for an interview and must be accompanied by a parent / guardian.",sub:[]},{id:"admission-policy-4",text:"Admission schedules and interview dates are displayed on school notice boards in mid-November.",sub:[]},{id:"admission-policy-5",text:"A student found unsuitable for a class will not be considered for any other class without a fresh registration and test.",sub:[]},{id:"admission-policy-6",text:"Change of date of birth is not allowed after admission at any stage.",sub:[]},{id:"admission-policy-7",text:"No admission fee is payable if an application for re-admission is submitted within 30 days of withdrawal.",sub:[]}]},{id:"age-criteria",title:"Age Criteria",points:[{id:"age-criteria-1",text:"Montessori / Play Group: 3 to 3\xBD years",sub:[]},{id:"age-criteria-2",text:"Preparatory Classes: 4 to 4\xBD years",sub:[]},{id:"age-criteria-3",text:"Class I to V: 5 to 10\xBD years",sub:[]},{id:"age-criteria-4",text:"Class VI to VIII: 11 to 13 years",sub:[]}]},{id:"transfer",title:"Inter-Branch Transfer",points:[{id:"transfer-1",text:"No admission fee is charged when a student qualifies for an inter-branch transfer.",sub:[]},{id:"transfer-2",text:"Students of Class IX and X are strongly advised not to seek transfers during the final two years of schooling. The school will not be responsible for any consequences arising from such transfers.",sub:[]}]}]},{id:"uniform",label:"Uniform",icon:"tag",colorClass:"text-violet-700",bgClass:"bg-violet-50",borderClass:"border-violet-200",badgeClass:"bg-violet-100 text-violet-700",bulletBg:"bg-violet-700",description:"Prescribed dress code for all classes, seasons, and genders",sections:[]},{id:"academics",label:"Academics",icon:"graduation-cap",colorClass:"text-orange-700",bgClass:"bg-orange-50",borderClass:"border-orange-200",badgeClass:"bg-orange-100 text-orange-700",bulletBg:"bg-orange-700",description:"Examination schedules, promotion criteria, and academic standards",sections:[{id:"exam-promotion",title:"Examination & Promotion",points:[{id:"exam-promotion-1",text:"30\u201340% of exam papers for Class III\u2013VIII may include unseen content to assess conceptual understanding and creative writing.",sub:[]},{id:"exam-promotion-2",text:"Students must attain at least 50% marks in all core subjects to be eligible for promotion to the next class.",sub:[]},{id:"exam-promotion-3",text:"Class VIII students must achieve at least 60% marks in Urdu, English, Science, and Mathematics to opt for science subjects in Class IX.",sub:[]},{id:"exam-promotion-4",text:"Decisions of the Principal or Staff Council regarding results, promotion, or demotion are final and binding.",sub:[]}]},{id:"exam-withhold",title:"Exam Admission \u2014 Grounds for Withholding",points:[{id:"exam-withhold-1",text:"The school may withhold board exam admission forms or roll number slips on any of the following grounds:",sub:[{id:"exam-withhold-1a",text:"Non-participation or failure in school send-up tests / examinations"},{id:"exam-withhold-1b",text:"Attendance below 80% (Class IX & X may also be withheld per Lahore Board policy)"},{id:"exam-withhold-1c",text:"Non-payment of school dues"},{id:"exam-withhold-1d",text:"Overall poor or unsatisfactory academic performance"}]},{id:"exam-withhold-2",text:"The school is not liable for any loss to a student arising from such withholding due to the student's own failure or lapse.",sub:[]}]}]},{id:"finance",label:"Finance",icon:"credit-card",colorClass:"text-teal-700",bgClass:"bg-teal-50",borderClass:"border-teal-200",badgeClass:"bg-teal-100 text-teal-700",bulletBg:"bg-teal-700",description:"Fee schedules, payment rules, and withdrawal policy",sections:[{id:"fee-rules",title:"Fee Rules",points:[{id:"fee-rules-1",text:"Fee is accepted from the 1st to 15th of each month, 8:00 am \u2013 11:00 am. If the 15th falls on a holiday, fees are accepted on the 16th.",sub:[]},{id:"fee-rules-2",text:"A late fine of Rs. 10/day is charged after the 15th until the 15th of the following month. After that, the student's name is struck off the roll.",sub:[]},{id:"fee-rules-3",text:"The School reserves the right to review and increase fees by a maximum of 10% per annum without prior notice.",sub:[]},{id:"fee-rules-4",text:"July and August fees are payable bi-monthly: July with April, and August with May.",sub:[]},{id:"fee-rules-5",text:"Annual / miscellaneous charges (worksheets, photocopies, etc.) are payable at the start of each academic session and are equivalent to one month's fee.",sub:[]},{id:"fee-rules-6",text:"Fee concessions or stipends may be granted to deserving students. These are withdrawn if the student fails any subject or exam.",sub:[]},{id:"fee-rules-7",text:"Dues once paid are non-refundable and non-transferable.",sub:[]}]},{id:"withdrawal",title:"Withdrawal Policy",points:[{id:"withdrawal-1",text:"One month's written notice is required before withdrawing a child, or one month's fee must be paid in lieu of notice.",sub:[]},{id:"withdrawal-2",text:"No notice is required if withdrawal occurs within one month of the annual result announcement.",sub:[]},{id:"withdrawal-3",text:"A student advised to withdraw for disciplinary reasons may be removed immediately at the sole discretion of the school.",sub:[]},{id:"withdrawal-4",text:"A student who fails the same class for two consecutive years may be asked to withdraw.",sub:[]},{id:"withdrawal-5",text:"School Leaving Certificate is issued only after all dues are cleared.",sub:[]}]}]},{id:"conduct",label:"Conduct & Leave",icon:"shield",colorClass:"text-red-700",bgClass:"bg-red-50",borderClass:"border-red-200",badgeClass:"bg-red-100 text-red-700",bulletBg:"bg-red-700",description:"Attendance requirements, leave applications, and discipline",sections:[{id:"leave-rules",title:"Leave & Attendance Rules",points:[{id:"leave-rules-1",text:"Minimum attendance required: 80%. Students below 80% are ineligible to sit for examinations.",sub:[]},{id:"leave-rules-2",text:"Leave applications must be submitted on a prescribed form, signed by the student's father / lawful guardian, on the day of absence.",sub:[]},{id:"leave-rules-3",text:"Leave up to 3 days is sanctioned by the class teacher; more than 3 days requires Vice Principal or Principal approval.",sub:[]},{id:"leave-rules-4",text:"Medical leave of 4+ days requires a certificate from a registered doctor or hospital.",sub:[]},{id:"leave-rules-5",text:"Absence without permission for 6 consecutive school days results in the student's name being struck off the roll. Re-admission (once only) is available within the next 6 days upon repayment of admission fee.",sub:[]},{id:"leave-rules-6",text:"Fines for unexcused absences:",sub:[{id:"leave-rules-6a",text:"Class I\u2013VIII: Rs. 10/day up to 6 days"},{id:"leave-rules-6b",text:"Class IX\u2013X: Rs. 100/day up to 6 days"},{id:"leave-rules-6c",text:"Absence from tests: up to Rs. 100 per test"},{id:"leave-rules-6d",text:"Unauthorized absence from Send-Up / Pre-Board Exam: up to Rs. 500 per paper"}]},{id:"leave-rules-7",text:"A student may not leave school premises once attendance is marked, except with permission from the Principal or Vice Principal.",sub:[]}]},{id:"discipline",title:"Discipline Policy",points:[{id:"discipline-1",text:"The following constitute misbehavior or breach of discipline:",sub:[{id:"discipline-1a",text:"Disobedience or impertinence toward any teacher, coordinator, or Principal"},{id:"discipline-1b",text:"Fighting, violent behavior, or abusive language at school or school functions"},{id:"discipline-1c",text:"Cheating in examinations or assessments"},{id:"discipline-1d",text:"Habitual late arrival or unexplained absence"},{id:"discipline-1e",text:"Disrupting the learning environment or causing distress to others"},{id:"discipline-1f",text:"Possession or use of a mobile phone with camera or any objectionable material"},{id:"discipline-1g",text:"Bringing dangerous objects or arms inside the school premises"},{id:"discipline-1h",text:"Any other act of willful omission or commission deemed misbehavior by the Management"}]}]},{id:"disciplinary-measures",title:"Disciplinary Measures",points:[{id:"disciplinary-measures-1",text:"Depending on severity, progressive disciplinary action may include:",sub:[{id:"disciplinary-measures-1a",text:"Counseling and placement under observation (parents informed)"},{id:"disciplinary-measures-1b",text:"Formal warning with parent signature"},{id:"disciplinary-measures-1c",text:"Special fine"},{id:"disciplinary-measures-1d",text:"Temporary ban from school premises"},{id:"disciplinary-measures-1e",text:"Removal from school"}]},{id:"disciplinary-measures-2",text:"For any dispute, a committee is constituted comprising the Vice Principal, a member nominated by the Principal, a staff member nominated by the student, and a senior staff council member. The committee's decision is final and binding.",sub:[]}]}]},{id:"general",label:"General",icon:"info",colorClass:"text-slate-700",bgClass:"bg-slate-50",borderClass:"border-slate-200",badgeClass:"bg-slate-100 text-slate-700",bulletBg:"bg-slate-700",description:"Miscellaneous rules and parent responsibilities",sections:[{id:"general-rules",title:"General Rules",points:[{id:"general-rules-1",text:"Parents must familiarise themselves fully with all school procedures. Admitting a child constitutes agreement to abide by all rules; no appeal against them will be entertained.",sub:[]},{id:"general-rules-2",text:"Students must wear the prescribed school uniform at all times while on campus.",sub:[]},{id:"general-rules-3",text:"Mobile phones are strictly prohibited. A student found with a mobile phone will be fined up to Rs. 1,000.",sub:[]},{id:"general-rules-4",text:"Late comers are fined Rs. 10/day or may be marked absent. Persistent late-coming may lead to expulsion.",sub:[]},{id:"general-rules-5",text:"Private telephone calls for students are not entertained; only emergency messages may be conveyed.",sub:[]},{id:"general-rules-6",text:"Sections allotted to students shall not be changed without valid justification.",sub:[]},{id:"general-rules-7",text:"The school is not responsible for injuries sustained during sports or co-curricular activities.",sub:[]},{id:"general-rules-8",text:"The school is not responsible for any consequences of postal delays.",sub:[]},{id:"general-rules-9",text:"Students are required to enrol for the next class and pay the prescribed fee after promotion, failing which their names will not appear on the class roll.",sub:[]}]},{id:"school-management",title:"School Management Rights",points:[{id:"school-management-1",text:"The school management may shift any branch premises to another location without parental consent, with advance notice.",sub:[]},{id:"school-management-2",text:"The management reserves the right to make, revise, amend, or introduce any rule as required.",sub:[]},{id:"school-management-3",text:"Academic and disciplinary rules are not open to challenge.",sub:[]}]}]}],policyHighlights=[{label:"Min. Attendance",value:"80%",note:"Required for exams"},{label:"Fee Deadline",value:"15th",note:"Of every month"},{label:"Annual Fee Rise",value:"\u226410%",note:"Per annum maximum"},{label:"Promotion Threshold",value:"50%",note:"In all core subjects"},{label:"Science Stream",value:"60%",note:"Required in 4 core subjects"},{label:"Absence Strike-off",value:"6 days",note:"Continuous without leave"}],policiesData={badge:"School Charter",categories:policyCategories,highlights:policyHighlights,lead:"Everything parents and students need to know about how LGGS operates \u2014 presented clearly and concisely.",paragraph:"Policies",title:"Rules",uniforms:uniformData};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { FC } from "react";
|
|
2
|
+
export interface FeatureCardProps {
|
|
3
|
+
accent: string;
|
|
4
|
+
bg: string;
|
|
5
|
+
description: string;
|
|
6
|
+
highlights: string[];
|
|
7
|
+
href: string;
|
|
8
|
+
Icon: React.ComponentType<{
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
title: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const FeatureCard: FC<FeatureCardProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import c from"next/link";import{CheckCircle2 as i,ArrowRight as f}from"lucide-react";import{Card as d,CardContent as x,CardHeader as p,CardTitle as E}from"../../components/ui/card";export const FeatureCard=({accent:t,bg:l,description:m,highlights:s,href:o,Icon:n,title:r})=>e.createElement(c,{key:r,href:o,prefetch:!1,className:"group flex"},e.createElement(d,{className:"flex w-full flex-col border-border/60 transition-all hover:shadow-lg hover:border-primary/40"},e.createElement(p,{className:"pb-3"},e.createElement("div",{className:`mb-4 inline-flex h-11 w-11 items-center justify-center rounded-xl ${l}`},e.createElement(n,{className:`h-5 w-5 ${t}`})),e.createElement(E,{className:"text-lg"},r)),e.createElement(x,{className:"flex flex-col flex-1 gap-4"},e.createElement("p",{className:"text-sm text-muted-foreground leading-relaxed"},m),e.createElement("ul",{className:"mt-auto space-y-1.5"},s.map(a=>e.createElement("li",{key:a,className:"flex items-start gap-2 text-sm text-foreground"},e.createElement(i,{className:`mt-0.5 h-4 w-4 shrink-0 ${t}`}),a))),e.createElement("div",{className:`mt-2 flex items-center gap-1 text-xs font-semibold ${t}`},"Learn more",e.createElement(f,{className:"h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5"})))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import{GraduationCap as c}from"lucide-react";export const DashboardMockup=({domain:l,enrollmentHeading:m,enrollmentList:d,items:s,schoolName:o,stats:n})=>e.createElement("div",{className:"relative mx-auto w-full max-w-3xl"},e.createElement("div",{className:"absolute inset-0 -z-10 scale-95 blur-3xl opacity-30 bg-gradient-to-br from-primary via-purple-500 to-blue-500 rounded-2xl"}),e.createElement("div",{className:"rounded-xl border border-border/60 bg-background shadow-2xl overflow-hidden"},e.createElement("div",{className:"flex items-center gap-2 border-b border-border/60 bg-muted/50 px-4 py-3"},e.createElement("span",{className:"h-3 w-3 rounded-full bg-red-400"}),e.createElement("span",{className:"h-3 w-3 rounded-full bg-yellow-400"}),e.createElement("span",{className:"h-3 w-3 rounded-full bg-green-400"}),e.createElement("div",{className:"ml-3 flex-1 rounded-md bg-background/70 border border-border/40 px-3 py-1 text-xs text-muted-foreground"},l)),e.createElement("div",{className:"flex h-[340px] sm:h-[380px]"},e.createElement("div",{className:"hidden w-44 flex-shrink-0 border-r border-border/40 bg-muted/30 p-3 sm:block"},e.createElement("div",{className:"mb-4 flex items-center gap-2"},e.createElement("span",{className:"flex h-6 w-6 items-center justify-center rounded bg-primary text-primary-foreground"},e.createElement(c,{className:"h-4 w-4"})),e.createElement("span",{className:"text-xs font-bold"},"EduPilotPro")),s.map(({icon:t,label:r,active:a})=>e.createElement("div",{key:r,className:`mb-1 flex items-center gap-2 rounded-md px-2 py-1.5 text-xs ${a?"bg-primary/10 text-primary font-semibold":"text-muted-foreground"}`},e.createElement(t,{className:"h-3.5 w-3.5 shrink-0"}),r))),e.createElement("div",{className:"flex-1 overflow-hidden p-4"},e.createElement("p",{className:"mb-3 text-sm font-semibold text-foreground"},"Overview \u2014 ",o),e.createElement("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-4"},n.map(({label:t,value:r,color:a})=>e.createElement("div",{key:t,className:"rounded-lg border border-border/50 bg-card p-3"},e.createElement("p",{className:"text-[10px] text-muted-foreground"},t),e.createElement("p",{className:`text-lg font-bold ${a}`},r)))),e.createElement("div",{className:"mt-3 rounded-lg border border-border/50 bg-card p-3"},e.createElement("p",{className:"mb-2 text-xs font-semibold text-foreground"},m),e.createElement("div",{className:"space-y-1.5"},d.map(({name:t,class:r,status:a})=>e.createElement("div",{key:t,className:"flex items-center justify-between text-[10px]"},e.createElement("span",{className:"font-medium text-foreground"},t),e.createElement("span",{className:"text-muted-foreground"},r),e.createElement("span",{className:`rounded-full px-1.5 py-0.5 text-[9px] font-medium ${a==="Active"?"bg-green-100 text-green-700":"bg-yellow-100 text-yellow-700"}`},a)))))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import e from"react";import l from"next/link";import{GraduationCap as p,Mail as v,Phone as g,MapPin as w,Facebook as y,Twitter as k,Instagram as P,Youtube as $}from"lucide-react";import{Separator as M}from"../../components/ui/separator";const c={facebook:y,instagram:P,twitter:k,youtube:$};export const Footer=({address:n,brandDescription:i,brandFullName:r,brandShortName:o,emailHref:x,emailLabel:E,partnerHref:m,partnerLabel:s,phoneHref:u,phoneLabel:h,programs:d,quickLinks:b,socialLinks:f})=>e.createElement("footer",{className:"bg-blue-950 text-blue-100"},e.createElement("div",{className:"container mx-auto px-4 py-12"},e.createElement("div",{className:"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4"},e.createElement("div",null,e.createElement("div",{className:"mb-4 flex items-center gap-2"},e.createElement("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-blue-600"},e.createElement(p,{className:"h-6 w-6 text-white"})),e.createElement("div",null,e.createElement("div",{className:"font-bold text-white"},o),e.createElement("div",{className:"text-xs text-blue-300"},r))),e.createElement("p",{className:"text-sm text-blue-300"},i),e.createElement("div",{className:"mt-4 flex gap-3"},f.filter(t=>t.enable).sort((t,a)=>t.order-a.order).map(t=>{var a;const N=(a=t.aria)!==null&&a!==void 0?a:t.name;return e.createElement(l,{key:`${t.name}-${t.order}`,href:t.href,"aria-label":N,className:"text-blue-300 transition-colors hover:text-white"},c[t.name]&&e.createElement(c[t.name],{className:"h-5 w-5"}))}))),e.createElement("div",null,e.createElement("h3",{className:"mb-4 font-semibold text-white"},"Quick Links"),e.createElement("ul",{className:"space-y-2 text-sm"},b.filter(t=>t.enable).sort((t,a)=>t.order-a.order).map(t=>e.createElement("li",{key:`${t.href}-${t.order}`},e.createElement(l,{href:t.href,className:"text-blue-300 transition-colors hover:text-white"},t.label))))),e.createElement("div",null,e.createElement("h3",{className:"mb-4 font-semibold text-white"},"Programs"),e.createElement("ul",{className:"space-y-2 text-sm"},d.map(t=>e.createElement("li",{key:t.id,className:"text-blue-300"},t.label)))),e.createElement("div",null,e.createElement("h3",{className:"mb-4 font-semibold text-white"},"Contact"),e.createElement("ul",{className:"space-y-3 text-sm"},e.createElement("li",{className:"flex items-start gap-2 text-blue-300"},e.createElement(w,{className:"mt-0.5 h-4 w-4 shrink-0"}),e.createElement("span",null,n)),e.createElement("li",{className:"flex items-center gap-2 text-blue-300"},e.createElement(g,{className:"h-4 w-4 shrink-0"}),e.createElement(l,{href:u,className:"transition-colors hover:text-white"},h)),e.createElement("li",{className:"flex items-center gap-2 text-blue-300"},e.createElement(v,{className:"h-4 w-4 shrink-0"}),e.createElement(l,{href:x,className:"transition-colors hover:text-white"},E))))),e.createElement(M,{className:"my-8 bg-blue-800"}),e.createElement("div",{className:"flex flex-col items-center justify-between gap-4 text-sm text-blue-400 md:flex-row"},e.createElement("p",null,"\xA9 ",new Date().getFullYear()," ",r,". All rights reserved."),e.createElement("div",{className:"flex gap-1"},"our Tech Partners",s&&m&&e.createElement(l,{target:"_blank",href:m,className:"transition-colors hover:text-white"},s)))));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AboutData, AdmissionsData, ContactData, FAQsData, FooterData, HeroData, ManagementData, PoliciesData, ProgramsData, TestimonialData, WhyUsData } from "../../templates/data/school-v1";
|
|
3
|
+
export type SchoolV1TemplateProps = {
|
|
4
|
+
overrides?: {
|
|
5
|
+
aboutData?: AboutData;
|
|
6
|
+
admissionsData?: AdmissionsData;
|
|
7
|
+
contactData?: ContactData;
|
|
8
|
+
faqsData?: FAQsData;
|
|
9
|
+
footerData?: FooterData;
|
|
10
|
+
heroData?: HeroData;
|
|
11
|
+
managementData?: ManagementData;
|
|
12
|
+
policiesData?: PoliciesData;
|
|
13
|
+
programsData?: ProgramsData;
|
|
14
|
+
testimonialData?: TestimonialData;
|
|
15
|
+
whysUsData?: WhyUsData;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const SchoolV1Template: React.FC<SchoolV1TemplateProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import a from"react";import{AboutSection as w}from"./sections/about";import{AdmissionsSection as y}from"./sections/admissions";import{ContactSection as A}from"./sections/contact";import{FAQsSection as U}from"./sections/faqs";import{HeroSection as q}from"./sections/hero";import{ManagementSection as C}from"./sections/management";import{PoliciesSection as F}from"./sections/policies";import{ProgramsSection as P}from"./sections/programs";import{TestimonialsSection as T}from"./sections/testimonials";import{WhyChooseUsSection as k}from"./sections/why-choose-us";import{aboutData as x,admissionsData as H,contactData as M,faqsData as N,footerData as Q,heroData as R,managementData as V,navigationData as W,policiesData as z,programsData as B,testimonialData as G,whysUsData as I}from"../../templates/data/school-v1";import{Navigation as J}from"./navigation";import{Footer as K}from"./footer";export const SchoolV1Template=({overrides:t})=>{var n,o,l,i,c,m,e,s,u,D,p;const f=(n=t?.heroData)!==null&&n!==void 0?n:R,g=(o=t?.aboutData)!==null&&o!==void 0?o:x,b=(l=t?.programsData)!==null&&l!==void 0?l:B,j=(i=t?.whysUsData)!==null&&i!==void 0?i:I,E=(c=t?.admissionsData)!==null&&c!==void 0?c:H,O=(m=t?.testimonialData)!==null&&m!==void 0?m:G,S=(e=t?.managementData)!==null&&e!==void 0?e:V,_=(s=t?.faqsData)!==null&&s!==void 0?s:N,h=(u=t?.contactData)!==null&&u!==void 0?u:M,d=(D=t?.policiesData)!==null&&D!==void 0?D:z,v=(p=t?.footerData)!==null&&p!==void 0?p:Q;return a.createElement("div",null,a.createElement(J,Object.assign({},W)),a.createElement(q,Object.assign({},f)),a.createElement(w,Object.assign({},g)),a.createElement(P,Object.assign({},b)),a.createElement(k,Object.assign({},j)),a.createElement(y,Object.assign({},E)),a.createElement(T,Object.assign({},O)),a.createElement(C,Object.assign({},S)),a.createElement(U,Object.assign({},_)),a.createElement(F,Object.assign({},d)),a.createElement(A,Object.assign({},h)),a.createElement(K,Object.assign({},v)))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import e,{useState as x,useEffect as b}from"react";import a from"next/link";import{usePathname as g}from"next/navigation";import{Button as i}from"../../components/ui/button";import{Sheet as w,SheetContent as v,SheetTrigger as N}from"../../components/ui/sheet";import{Separator as y}from"../../components/ui/separator";import{Menu as C,GraduationCap as p}from"lucide-react";import{cn as m}from"../../lib/utils";export const Navigation=({brandFullName:d,brandShortName:u,ctaHref:s,ctaLabel:n,items:f})=>{const l=g()==="/",[r,h]=x(!1),[E,o]=x(!1);return b(()=>{if(l){const t=()=>h(window.scrollY>20);return window.addEventListener("scroll",t),t(),()=>window.removeEventListener("scroll",t)}else h(!1)},[l]),e.createElement("div",{className:m(l?"fixed top-0 z-50 w-full transition-all duration-300":"sticky top-0 z-50 w-full",l?r?"bg-white/95 shadow-md backdrop-blur-sm":"bg-transparent":"bg-white shadow-md")},e.createElement("nav",{className:"container mx-auto flex h-16 items-center justify-between px-4"},e.createElement(a,{href:"/",className:"flex items-center gap-2"},e.createElement("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-blue-700"},e.createElement(p,{className:"h-6 w-6 text-white"})),e.createElement("div",null,e.createElement("div",{className:m("text-sm leading-none font-bold",l?r?"text-blue-900":"text-white":"text-blue-900")},u),e.createElement("div",{className:m("text-xs leading-none",l?r?"text-blue-600":"text-blue-100":"text-blue-600")},d))),e.createElement("div",{className:"hidden items-center gap-6 lg:flex"},f.filter(t=>t.enable).sort((t,c)=>t.order-c.order).map(t=>e.createElement(a,{key:`${t.href}-${t.order}`,href:t.href,className:m("text-sm font-medium transition-colors hover:text-blue-400",l?r?"text-gray-700":"text-white":"text-gray-700")},t.label)),s&&n&&e.createElement(i,{asChild:!0,size:"sm",className:"bg-blue-700 hover:bg-blue-800"},e.createElement(a,{href:s},n))),e.createElement(w,{open:E,onOpenChange:o},e.createElement(N,{asChild:!0,className:"lg:hidden"},e.createElement(i,{variant:"ghost",size:"icon"},e.createElement(C,{className:l?r?"text-gray-700":"text-white":"text-gray-700"}))),e.createElement(v,{side:"right",className:"w-72"},e.createElement("div",{className:"flex items-center gap-2 py-4"},e.createElement("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-blue-700"},e.createElement(p,{className:"h-6 w-6 text-white"})),e.createElement("div",null,e.createElement("div",{className:"text-sm font-bold text-blue-900"},u),e.createElement("div",{className:"text-xs text-blue-600"},d))),e.createElement(y,null),e.createElement("div",{className:"mt-4 flex flex-col gap-2"},f.filter(t=>t.enable).sort((t,c)=>t.order-c.order).map(t=>e.createElement(a,{key:`${t.href}-${t.order}`,href:t.href,onClick:()=>o(!1),className:"rounded-md px-3 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-blue-50 hover:text-blue-700"},t.label)),s&&n&&e.createElement(i,{asChild:!0,className:"mt-4 bg-blue-700 text-white hover:bg-blue-800"},e.createElement(a,{href:s,onClick:()=>o(!1)},n)))))))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as a}from"framer-motion";import{Badge as p}from"../../../components/ui/badge";import{Card as y,CardContent as g}from"../../../components/ui/card";import{Separator as b}from"../../../components/ui/separator";import{Star as u,Heart as w,Target as E,Eye as h}from"lucide-react";import e from"react";const N={star:u,heart:w,target:E,eye:h};export const AboutSection=({badge:i,heading:l,headingHighlight:o,lead:n,milestones:c,paragraphs:m,stats:s,values:d})=>e.createElement("section",{id:"about",className:"overflow-hidden bg-white py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(a.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(p,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},i),e.createElement("h2",{className:"mb-4 text-4xl font-bold text-gray-900 md:text-5xl"},l," ",e.createElement("span",{className:"text-blue-700"},o)),e.createElement("p",{className:"mx-auto max-w-3xl text-lg text-gray-600"},n)),e.createElement("div",{className:"mb-20 grid grid-cols-1 items-start gap-16 lg:grid-cols-2"},e.createElement(a.div,{initial:{opacity:0,x:-50},whileInView:{opacity:1,x:0},transition:{duration:.7},viewport:{once:!0}},e.createElement("div",{className:"mb-6 space-y-5"},m.map(t=>e.createElement("p",{key:t.id,className:"leading-relaxed text-gray-600"},t.content))),e.createElement("div",{className:"grid grid-cols-2 gap-4"},s.map(t=>e.createElement(a.div,{key:t.label,className:"rounded-2xl border border-gray-100 bg-gray-50 p-5 text-center shadow-sm",whileHover:{scale:1.04,y:-3},transition:{type:"spring",stiffness:300}},e.createElement("div",{className:"mb-1 text-2xl font-extrabold text-gray-900"},t.value),e.createElement("div",{className:"text-xs font-medium text-gray-500"},t.label),e.createElement("div",{className:`mx-auto mt-2 h-1 w-10 rounded-full ${t.color}`}))))),e.createElement(a.div,{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",initial:{opacity:0,x:50},whileInView:{opacity:1,x:0},transition:{duration:.7,delay:.2},viewport:{once:!0}},d.map((t,r)=>e.createElement(a.div,{key:t.title,initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:r*.12},viewport:{once:!0},whileHover:{y:-6}},e.createElement(y,{className:`h-full border ${t.borderColor} transition-shadow hover:shadow-lg`},e.createElement(g,{className:`h-full p-6 ${t.color}`},e.createElement("div",{className:"mb-3 flex h-12 w-12 items-center justify-center rounded-xl bg-white shadow-sm"},(()=>{const x=N[t.icon];return e.createElement(x,{className:`h-6 w-6 ${t.iconColor}`})})()),e.createElement("h3",{className:"mb-2 font-semibold text-gray-900"},t.title),e.createElement("p",{className:"text-sm leading-relaxed text-gray-600"},t.description))))))),e.createElement(a.div,{initial:{opacity:0,y:40},whileInView:{opacity:1,y:0},transition:{duration:.7},viewport:{once:!0},className:"rounded-3xl bg-linear-to-r from-blue-900 to-blue-700 p-8 md:p-12"},e.createElement("h3",{className:"mb-8 text-center text-2xl font-bold text-white"},"Our Journey Through Time"),e.createElement("div",{className:"grid grid-cols-2 gap-6 md:grid-cols-4"},c.map((t,r)=>e.createElement(a.div,{key:t.year,initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:r*.15},viewport:{once:!0},className:"text-center"},e.createElement("div",{className:"mb-2 text-3xl font-extrabold text-yellow-400"},t.year),e.createElement(b,{className:"mx-auto mb-2 w-8 bg-white/20"}),e.createElement("p",{className:"text-sm leading-relaxed text-blue-100"},t.event)))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as a}from"framer-motion";import{Badge as r}from"../../../components/ui/badge";import{Button as f}from"../../../components/ui/button";import i from"next/link";import{CheckCircle as n,Download as v,Phone as k,Mail as I,FileText as V,Calendar as C,ClipboardList as S}from"lucide-react";import e from"react";const j={"file-text":V,calendar:C,"clipboard-list":S,"check-circle":n},L={open:"bg-green-100 text-green-700",upcoming:"bg-blue-100 text-blue-700",closed:"bg-gray-100 text-gray-500"};export const AdmissionsSection=({admissionSteps:c,badge:s,ctaDownloadLabel:m,ctaEmailHref:o,ctaEmailLabel:d,ctaPhoneHref:x,ctaPhoneLabel:b,documentsRequired:g,documentsTitle:p,heading:y,headingHighlight:u,keyDates:E,keyDatesTitle:N,lead:l})=>e.createElement("section",{id:"admissions",className:"overflow-hidden bg-white py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(a.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(r,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},s),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},y," ",e.createElement("span",{className:"text-blue-700"},u)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},l)),e.createElement("div",{className:"relative mb-16 grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4"},e.createElement("div",{className:"absolute top-10 right-[12.5%] left-[12.5%] z-0 hidden h-0.5 bg-blue-100 lg:block"}),c.map((t,h)=>e.createElement(a.div,{key:t.step,className:"relative z-10 flex flex-col items-center text-center",initial:{opacity:0,y:40},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:h*.12},viewport:{once:!0}},e.createElement("div",{className:`mb-5 flex h-20 w-20 items-center justify-center rounded-full ${t.color} shadow-lg ring-4 ring-white`},(()=>{const w=j[t.icon];return e.createElement(w,{className:"h-8 w-8"})})()),e.createElement("div",{className:"mb-2 text-xs font-bold tracking-wider text-gray-400 uppercase"},"Step ",t.step),e.createElement("h3",{className:"mb-2 font-bold text-gray-900"},t.title),e.createElement("p",{className:"text-sm leading-relaxed text-gray-500"},t.description)))),e.createElement("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-3"},e.createElement(a.div,{className:"rounded-2xl bg-slate-50 p-6",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.5},viewport:{once:!0}},e.createElement("h3",{className:"mb-4 text-lg font-bold text-gray-900"},N),e.createElement("div",{className:"space-y-3"},E.map(t=>e.createElement("div",{key:t.event,className:"flex items-center justify-between border-b border-gray-200 py-2 last:border-0"},e.createElement("span",{className:"text-sm text-gray-700"},t.event),e.createElement(r,{className:L[t.status]},t.date))))),e.createElement(a.div,{className:"rounded-2xl bg-slate-50 p-6",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:.1},viewport:{once:!0}},e.createElement("h3",{className:"mb-4 text-lg font-bold text-gray-900"},p),e.createElement("ul",{className:"space-y-2"},g.map(t=>e.createElement("li",{key:t.id,className:"flex items-start gap-2 text-sm text-gray-600"},e.createElement(n,{className:"mt-0.5 h-4 w-4 shrink-0 text-green-500"}),t.content)))),e.createElement(a.div,{className:"flex flex-col justify-between rounded-2xl bg-linear-to-br from-blue-800 to-blue-600 p-7 text-white",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:.2},viewport:{once:!0}},e.createElement("div",null,e.createElement("h3",{className:"mb-3 text-xl font-bold"},"Ready to Join LGGS?"),e.createElement("p",{className:"mb-6 text-sm leading-relaxed text-blue-200"},l)),e.createElement("div",{className:"space-y-3"},e.createElement(f,{className:"w-full bg-yellow-400 font-bold text-blue-900 hover:bg-yellow-300"},e.createElement(v,{className:"mr-2 h-4 w-4"}),m),e.createElement("div",{className:"space-y-2 border-t border-blue-700 pt-3"},e.createElement(i,{href:x,className:"flex items-center gap-2 text-sm text-blue-200 transition-colors hover:text-white"},e.createElement(k,{className:"h-4 w-4"})," ",b),e.createElement(i,{href:o,className:"flex items-center gap-2 text-sm text-blue-200 transition-colors hover:text-white"},e.createElement(I,{className:"h-4 w-4"})," ",d)))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as r}from"framer-motion";import{Badge as N}from"../../../components/ui/badge";import{Button as n}from"../../../components/ui/button";import l from"next/link";import{MapPin as o,Phone as k,Mail as I,Clock as M,Facebook as V,Instagram as j,Twitter as C}from"lucide-react";import e from"react";const c={"map-pin":o,phone:k,mail:I,clock:M,facebook:V,instagram:j,twitter:C};export const ContactSection=({badge:i,contactDetails:m,ctaBullets:s,ctaLead:d,ctaPrimaryHref:x,ctaPrimaryLabel:b,ctaSecondaryHref:u,ctaSecondaryLabel:p,ctaTitle:h,heading:g,headingHighlight:f,lead:w,mapEmbedSrc:E,mapOpenLink:y,socialLinks:v})=>e.createElement("section",{id:"contact",className:"overflow-hidden bg-white py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(r.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(N,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},i),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},g," ",e.createElement("span",{className:"text-blue-700"},f)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},w)),e.createElement("div",{className:"grid grid-cols-1 gap-10 lg:grid-cols-2"},e.createElement(r.div,{initial:{opacity:0,x:-30},whileInView:{opacity:1,x:0},transition:{duration:.5},viewport:{once:!0}},e.createElement("div",{className:"mb-8 grid grid-cols-1 gap-4 sm:grid-cols-2"},m.map(t=>e.createElement("div",{key:t.label,className:"rounded-2xl border border-gray-100 bg-slate-50 p-5 transition-shadow hover:shadow-md"},e.createElement("div",{className:`mb-3 inline-flex h-10 w-10 items-center justify-center rounded-xl ${t.bg}`},(()=>{const a=c[t.icon];return a?e.createElement(a,{className:`h-5 w-5 ${t.color}`}):null})()),e.createElement("div",{className:"mb-1 text-xs font-semibold tracking-wider text-gray-400 uppercase"},t.label),t.href!==null?e.createElement(l,{href:t.href,className:`text-sm font-medium ${t.color} hover:underline`},t.value):e.createElement("div",{className:"text-sm font-medium text-gray-700"},t.value)))),e.createElement("div",{className:"mb-8"},e.createElement("p",{className:"mb-3 text-sm font-semibold text-gray-700"},"Follow Us"),e.createElement("div",{className:"flex gap-3"},v.map(t=>e.createElement(l,{key:t.label,href:t.href,className:"flex h-10 w-10 items-center justify-center rounded-xl border border-gray-200 bg-white transition-colors hover:border-blue-200 hover:bg-blue-50","aria-label":t.label},(()=>{const a=c[t.icon];return a?e.createElement(a,{className:"h-5 w-5 text-gray-600"}):null})())))),e.createElement(r.div,{className:"overflow-hidden rounded-2xl border border-gray-100 shadow-sm",initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:.2},viewport:{once:!0}},e.createElement("iframe",{className:"rounded-2xl",src:E,width:"800",height:"250",loading:"lazy"}),e.createElement("div",{className:"flex items-center gap-2 bg-slate-50 px-4 py-2.5"},e.createElement(o,{className:"h-4 w-4 text-blue-600"}),e.createElement(l,{href:y,className:"text-xs font-medium text-blue-700 hover:underline"},"Open in Google Maps")))),e.createElement(r.div,{className:"flex flex-col justify-between rounded-3xl bg-linear-to-br from-blue-800 via-blue-700 to-blue-600 p-8 text-white",initial:{opacity:0,x:30},whileInView:{opacity:1,x:0},transition:{duration:.5,delay:.1},viewport:{once:!0}},e.createElement("div",null,e.createElement("h3",{className:"mb-4 text-2xl font-bold"},h),e.createElement("p",{className:"mb-6 leading-relaxed text-blue-200"},d),e.createElement("ul",{className:"mb-8 space-y-2"},s.map(t=>e.createElement("li",{key:t,className:"flex items-center gap-2 text-sm text-blue-100"},e.createElement("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-yellow-400"}),t)))),e.createElement("div",{className:"flex flex-col gap-3 sm:flex-row"},e.createElement(n,{className:"flex-1 bg-yellow-400 font-bold text-blue-900 hover:bg-yellow-300"},e.createElement(l,{href:x||"#"},b)),e.createElement(n,{asChild:!0,variant:"outline",className:"flex-1 border-white/40 bg-white/10 text-white hover:bg-white/20"},e.createElement(l,{href:u||"#"},p)))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as a}from"framer-motion";import{Accordion as d,AccordionContent as p,AccordionItem as x,AccordionTrigger as u}from"../../../components/ui/accordion";import{Badge as r}from"../../../components/ui/badge";import{HelpCircle as b,Users as g,GraduationCap as y,Calendar as h,BookOpen as E,Heart as w,Shield as N,Star as v,CreditCard as f,Bus as C}from"lucide-react";import e from"react";const A={help:b,users:g,"graduation-cap":y,calendar:h,"book-open":E,heart:w,shield:N,star:v,"credit-card":f,bus:C};export const FAQsSection=({badge:l,heading:n,headingHighlight:o,items:i,lead:s})=>e.createElement("section",{id:"faqs",className:"overflow-hidden bg-slate-50 py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(a.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(r,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},l),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},n," ",e.createElement("span",{className:"text-blue-700"},o)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},s)),e.createElement("div",{className:"mx-auto max-w-3xl"},e.createElement(d,{type:"single",collapsible:!0,className:"space-y-3"},i.map((t,c)=>e.createElement(a.div,{key:t.id,initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.4,delay:c*.05},viewport:{once:!0}},e.createElement(x,{value:t.id,className:"rounded-xl border border-gray-100 bg-white px-2 shadow-sm transition-shadow hover:shadow-md data-[state=open]:border-blue-100 data-[state=open]:shadow-md"},e.createElement(u,{className:"px-4 py-5 hover:no-underline"},e.createElement("div",{className:"flex items-start gap-3 text-left"},e.createElement("div",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-blue-50"},(()=>{const m=A[t.icon];return e.createElement(m,{className:"h-4 w-4 text-blue-600"})})()),e.createElement("div",null,e.createElement(r,{variant:"outline",className:"mb-1 border-blue-200 text-xs text-blue-600"},t.category),e.createElement("div",{className:"font-semibold text-gray-900"},t.question)))),e.createElement(p,{className:"pr-4 pb-5 pl-15 text-sm leading-relaxed text-gray-600"},t.answer))))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import e,{useState as c,useEffect as y,useCallback as E}from"react";import x from"next/link";import{motion as r,AnimatePresence as g}from"framer-motion";import{ChevronLeft as N,ChevronRight as k,Award as C,Users as z,Building2 as S,Heart as _}from"lucide-react";import{Button as p}from"../../../components/ui/button";import{heroSlides as f}from"../../data/school-v1";const H={award:C,users:z,building:S,heart:_},n={enter:{opacity:0,y:40},center:{opacity:1,y:0},exit:{opacity:0,y:-30}},I={enter:i=>({x:i>0?"100%":"-100%"}),center:{x:0},exit:i=>({x:i>0?"-100%":"100%"})};export const HeroSection=({slides:i,stats:v})=>{const[o,m]=c(0),[d,u]=c(1),[b,h]=c(!1),s=E(a=>{u(a),m(l=>(l+a+i.length)%i.length)},[i.length]);y(()=>{if(b)return;const a=setInterval(()=>s(1),5500);return()=>clearInterval(a)},[b,s]);const t=i[o];return e.createElement("section",{id:"home",className:"relative overflow-hidden bg-blue-950",style:{height:"75vh",minHeight:"560px"},onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1)},e.createElement(g,{initial:!1,custom:d},e.createElement(r.div,{key:t.id,custom:d,variants:I,initial:"enter",animate:"center",exit:"exit",transition:{duration:.85,ease:[.32,.72,0,1]},className:`absolute inset-0 bg-linear-to-br ${t.gradient}`},e.createElement("img",{src:t.imageUrl,alt:"",role:"presentation",className:"absolute inset-0 h-full w-full object-cover opacity-20"}),e.createElement("div",{className:"absolute inset-0 opacity-60",style:{background:t.pattern}}),e.createElement("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_bottom_left,rgba(255,255,255,0.06)_0%,transparent_55%)]"}),e.createElement("div",{className:"absolute top-10 right-10 h-72 w-72 rounded-full bg-white/5 blur-3xl"}),e.createElement("div",{className:"absolute bottom-10 left-20 h-56 w-56 rounded-full bg-white/5 blur-2xl"}),e.createElement("div",{className:"absolute top-1/2 right-1/4 h-40 w-40 rounded-full border border-white/10"}),e.createElement("div",{className:"absolute top-1/3 right-1/3 h-64 w-64 rounded-full border border-white/5"}))),e.createElement("div",{className:"relative z-10 flex h-full flex-col"},e.createElement("div",{className:"flex flex-1 items-center"},e.createElement("div",{className:"container mx-auto px-6 md:px-12"},e.createElement("div",{className:"max-w-3xl"},e.createElement(g,{mode:"wait"},e.createElement(r.div,{key:t.id+"-content",initial:"enter",animate:"center",exit:"exit",variants:n,transition:{duration:.6}},e.createElement(r.div,{variants:n,transition:{duration:.5},className:"mb-2"},e.createElement("span",{className:"inline-block rounded-full border border-white/20 bg-white/10 px-4 py-1.5 text-sm font-medium text-white backdrop-blur-sm"},t.badge)),e.createElement(r.h1,{variants:n,transition:{duration:.55,delay:.1},className:"mb-1 text-2xl leading-tight font-extrabold tracking-tight text-white md:text-5xl lg:text-6xl xl:text-7xl"},t.headline),e.createElement(r.h1,{variants:n,transition:{duration:.55,delay:.2},className:`mb-2 text-2xl leading-tight font-extrabold tracking-tight md:text-5xl lg:text-6xl xl:text-7xl ${t.accentColor}`},t.subheadline),e.createElement(r.p,{variants:n,transition:{duration:.5,delay:.3},className:"mb-8 max-w-xl text-base leading-relaxed text-white/75 md:text-lg"},t.description),e.createElement(r.div,{variants:n,transition:{duration:.5,delay:.4},className:"flex flex-wrap gap-4"},e.createElement(p,{asChild:!0,size:"lg",className:"rounded-full bg-yellow-400 font-semibold text-gray-900 shadow-lg hover:bg-yellow-300"},e.createElement(x,{href:t.primaryCtaHref},t.primaryCtaLabel)),e.createElement(p,{asChild:!0,size:"lg",variant:"outline",className:"rounded-full border-white/40 bg-white/10 text-white backdrop-blur-sm hover:bg-white hover:text-gray-900"},e.createElement(x,{href:t.secondaryCtaHref},t.secondaryCtaLabel)))))))),e.createElement(r.div,{className:"border-t border-white/10 bg-black/20 backdrop-blur-sm",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.6}},e.createElement("div",{className:"container mx-auto px-6 py-4 md:px-12"},e.createElement("div",{className:"grid grid-cols-2 gap-4 md:grid-cols-4"},v.map((a,l)=>{const w=H[a.icon];return e.createElement(r.div,{key:a.label,initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.5,delay:.7+l*.1},className:"flex items-center gap-3"},e.createElement("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-yellow-400/20"},e.createElement(w,{className:"h-5 w-5 text-yellow-400"})),e.createElement("div",null,e.createElement("div",{className:"text-lg leading-none font-bold text-white"},a.value),e.createElement("div",{className:"text-xs text-white/60"},a.label)))}))))),e.createElement("button",{onClick:()=>s(-1),"aria-label":"Previous slide",className:"absolute top-1/2 left-4 z-20 -translate-y-1/2 rounded-full bg-white/10 p-2 text-white backdrop-blur-sm transition hover:bg-white/25"},e.createElement(N,{className:"h-6 w-6"})),e.createElement("button",{onClick:()=>s(1),"aria-label":"Next slide",className:"absolute top-1/2 right-4 z-20 -translate-y-1/2 rounded-full bg-white/10 p-2 text-white backdrop-blur-sm transition hover:bg-white/25"},e.createElement(k,{className:"h-6 w-6"})),e.createElement("div",{className:"absolute bottom-20 left-6 z-20 hidden gap-2 md:left-12 md:block"},f.map((a,l)=>e.createElement("button",{key:l,onClick:()=>{u(l>o?1:-1),m(l)},"aria-label":`Go to slide ${l+1}`,className:`h-2 mr-1 rounded-full transition-all duration-300 ${l===o?"w-8 bg-yellow-400":"w-2 bg-white/40 hover:bg-white/70"}`}))),e.createElement("div",{className:"absolute right-6 bottom-24 z-20 hidden rounded-full bg-black/20 px-3 py-1 text-xs text-white/60 backdrop-blur-sm md:block"},String(o+1).padStart(2,"0")," /"," ",String(f.length).padStart(2,"0")))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as a}from"framer-motion";import o from"next/image";import{Badge as m}from"../../../components/ui/badge";import{GraduationCap as d}from"lucide-react";import e from"react";export const ManagementSection=({badge:l,heading:i,headingHighlight:n,lead:r,team:s})=>e.createElement("section",{id:"management",className:"overflow-hidden bg-white py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(a.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(m,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},l),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},i," ",e.createElement("span",{className:"text-blue-700"},n)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},r)),e.createElement("div",{className:"grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5"},s.map((t,c)=>e.createElement(a.div,{key:t.id,className:"flex flex-col items-center text-center",initial:{opacity:1,y:50},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:c*.1},viewport:{once:!0}},e.createElement(a.div,{className:"relative mb-5 h-24 w-24 rounded-full shadow-lg",whileHover:{scale:1.08},transition:{type:"spring",stiffness:300}},e.createElement(o,{src:t.avatar,alt:t.name,fill:!0,className:"rounded-full object-cover"})),e.createElement("h3",{className:"mb-0.5 font-bold text-gray-900"},t.name),e.createElement("p",{className:"mb-3 text-xs font-semibold text-blue-700"},t.title),e.createElement("span",{className:"mb-3 inline-flex items-center gap-1 rounded-full bg-slate-100 px-2.5 py-1 text-xs text-gray-600"},e.createElement(d,{className:"h-3 w-3"}),t.qualifications),e.createElement("p",{className:"text-xs leading-relaxed text-gray-500"},t.bio))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import e,{useState as g}from"react";import{motion as c,AnimatePresence as u}from"framer-motion";import{BookOpen as N,UserPlus as h,GraduationCap as v,CreditCard as w,Shield as $,Info as C,Tag as k,ChevronDown as I,CheckCircle as S,Sun as B,Snowflake as A}from"lucide-react";import{Badge as b}from"../../../components/ui/badge";const y={"book-open":N,"user-plus":h,"graduation-cap":v,"credit-card":w,shield:$,info:C,tag:k};function P({section:n,colorClass:r,bgClass:o,borderClass:m,bulletBg:d}){const[i,p]=g(!1);return e.createElement("div",{className:`self-start overflow-hidden rounded-xl border ${m} bg-white`},e.createElement("button",{className:"flex w-full items-center justify-between gap-4 px-5 py-4 text-left",onClick:()=>p(s=>!s)},e.createElement("span",{className:"text-sm font-semibold text-gray-800"},n.title),e.createElement(c.div,{animate:{rotate:i?180:0},transition:{duration:.2}},e.createElement(I,{className:`h-4 w-4 shrink-0 ${r}`}))),e.createElement(u,{initial:!1},i&&e.createElement(c.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.25,ease:"easeInOut"}},e.createElement("div",{className:`border-t ${m} ${o} space-y-3 px-5 py-4`},n.points.map((s,l)=>e.createElement("div",{key:l,className:"flex gap-3"},e.createElement(S,{className:`mt-0.5 h-4 w-4 shrink-0 ${r}`}),e.createElement("div",null,e.createElement("p",{className:"text-sm leading-relaxed text-gray-700"},s.text),s.sub&&e.createElement("ul",{className:"mt-2 space-y-1"},s.sub.map(t=>e.createElement("li",{key:t.id,className:"flex items-start gap-2"},e.createElement("span",{className:`mt-2 h-1.5 w-1.5 shrink-0 rounded-full ${d}`}),e.createElement("span",{className:"text-sm text-gray-600"},t.text)))))))))))}function O({colorClass:n,bgClass:r,borderClass:o,bulletBg:m,uniformData:d}){const[i,p]=g("Summer"),s=d.find(l=>l.season===i);return e.createElement("div",{className:"space-y-4"},e.createElement("div",{className:"flex w-fit gap-2 rounded-xl border border-gray-100 bg-white p-1"},["Summer","Winter"].map(l=>e.createElement("button",{key:l,onClick:()=>p(l),className:`flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-all ${i===l?`${r} ${n} shadow-sm`:"text-gray-500 hover:text-gray-700"}`},l==="Summer"?e.createElement(B,{className:"h-4 w-4"}):e.createElement(A,{className:"h-4 w-4"}),l))),e.createElement("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2"},s.variants.map((l,t)=>e.createElement(c.div,{key:`${l.gender}-${l.classes}`,initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.2,delay:t*.06},className:`rounded-xl border ${o} bg-white p-4`},e.createElement("div",{className:"mb-3 flex items-center gap-2"},e.createElement("span",{className:`rounded-md px-2 py-0.5 text-xs font-bold ${r} ${n}`},l.gender),e.createElement("span",{className:"text-xs text-gray-500"},l.classes)),e.createElement("ul",{className:"space-y-1.5"},l.items.map(x=>e.createElement("li",{key:x.id,className:"flex items-start gap-2"},e.createElement("span",{className:`mt-2 h-1.5 w-1.5 shrink-0 rounded-full ${m}`}),e.createElement("span",{className:"text-sm leading-relaxed text-gray-600"},x.text))))))),e.createElement("p",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-2.5 text-xs text-amber-700"},"Uniforms for both campuses are available at each campus canteen. Playgroup children may come in private clothes."))}export const PoliciesSection=({badge:n,categories:r,highlights:o,lead:m,paragraph:d,title:i,uniforms:p})=>{const[s,l]=g("overview"),t=r.find(a=>a.id===s),x=y[t.icon];return e.createElement("section",{id:"policies",className:"overflow-hidden bg-gray-50 py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(c.div,{className:"mb-12 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(b,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},n),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},i," & ",e.createElement("span",{className:"text-blue-700"},m)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},d)),e.createElement(c.div,{className:"mb-12 grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6",initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.6,delay:.15},viewport:{once:!0}},o.map(a=>e.createElement("div",{key:a.label,className:"rounded-2xl border border-blue-100 bg-white px-3 py-4 text-center shadow-sm"},e.createElement("div",{className:"text-2xl font-bold text-blue-700"},a.value),e.createElement("div",{className:"mt-0.5 text-xs font-semibold text-gray-800"},a.label),e.createElement("div",{className:"mt-0.5 text-xs text-gray-400"},a.note)))),e.createElement(c.div,{className:"mb-6 flex flex-wrap gap-2",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:.2},viewport:{once:!0}},r.map(a=>{const E=y[a.icon],f=a.id===s;return e.createElement("button",{key:a.id,onClick:()=>l(a.id),className:`flex items-center gap-2 rounded-full border px-4 py-2 text-sm font-medium transition-all ${f?`${a.bgClass} ${a.colorClass} ${a.borderClass} shadow-sm`:"border-gray-200 bg-white text-gray-500 hover:border-gray-300 hover:text-gray-700"}`},e.createElement(E,{className:"h-4 w-4"}),a.label)})),e.createElement(u,{mode:"wait"},e.createElement(c.div,{key:s,initial:{opacity:0,y:16},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.25}},e.createElement("div",{className:`mb-6 flex items-center gap-4 rounded-2xl border ${t.borderClass} ${t.bgClass} p-5`},e.createElement("div",{className:`flex h-12 w-12 shrink-0 items-center justify-center rounded-xl border ${t.borderClass} bg-white`},e.createElement(x,{className:`h-6 w-6 ${t.colorClass}`})),e.createElement("div",null,e.createElement("h3",{className:`text-lg font-bold ${t.colorClass}`},t.label),e.createElement("p",{className:"text-sm text-gray-500"},t.description)),e.createElement(b,{className:`ml-auto ${t.badgeClass} hover:${t.badgeClass}`},s==="uniform"?"2 seasons":`${t.sections.length} section${t.sections.length!==1?"s":""}`)),s==="uniform"?e.createElement(O,{colorClass:t.colorClass,bgClass:t.bgClass,borderClass:t.borderClass,bulletBg:t.bulletBg,uniformData:p}):e.createElement("div",{className:"grid grid-cols-1 gap-3 lg:grid-cols-2"},t.sections.map(a=>e.createElement(P,{key:a.id,section:a,colorClass:t.colorClass,bgClass:t.bgClass,borderClass:t.borderClass,bulletBg:t.bulletBg})))))))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import e,{useState as E}from"react";import{motion as i,AnimatePresence as N}from"framer-motion";import{Badge as g}from"../../../components/ui/badge";import{Card as d,CardContent as x}from"../../../components/ui/card";import{Button as w}from"../../../components/ui/button";import f from"next/link";import{Check as b,ArrowRight as v,Baby as C,BookOpen as s,GraduationCap as $,User as k}from"lucide-react";export const ProgramsSection=({badge:y,lead:p,programs:n,title:u})=>{const[r,o]=E(0),a=n[r],m={baby:C,"book-open":s,"graduation-cap":$,user:k};return e.createElement("section",{id:"programs",className:"bg-gray-50 py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(i.div,{className:"mb-14 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(g,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},y),e.createElement("h2",{className:"mb-4 text-4xl font-bold text-gray-900 md:text-5xl"},u),e.createElement("p",{className:"mx-auto max-w-2xl text-lg text-gray-600"},p)),e.createElement(i.div,{className:"mb-10 flex flex-wrap justify-center gap-3",initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:.2},viewport:{once:!0}},n.map((t,l)=>e.createElement("button",{key:t.title,onClick:()=>o(l),className:`rounded-full px-5 py-2.5 text-sm font-medium transition-all ${r===l?`${t.color} text-white shadow-md`:"bg-white text-gray-600 shadow-sm hover:bg-gray-100"}`},t.title,e.createElement("span",{className:"ml-2 text-xs opacity-75"},t.ages)))),e.createElement(N,{mode:"wait"},e.createElement(i.div,{key:r,initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.4}},e.createElement(d,{className:"overflow-hidden border-0 shadow-xl"},e.createElement("div",{className:`h-2 w-full ${a.color}`}),e.createElement(x,{className:"p-0"},e.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2"},e.createElement("div",{className:`p-8 md:p-12 ${a.lightColor}`},e.createElement("div",{className:`mb-4 inline-flex items-center gap-2 rounded-full ${a.color} px-4 py-1.5 text-sm font-semibold text-white`},(()=>{var t;const l=(t=m[a.icon])!==null&&t!==void 0?t:s;return e.createElement(l,{className:"h-4 w-4"})})(),a.ages),e.createElement("h3",{className:"mb-4 text-2xl font-bold text-gray-900 md:text-3xl"},a.title),e.createElement("p",{className:"mb-6 leading-relaxed text-gray-700"},a.description),e.createElement(w,{asChild:!0,className:`${a.color} border-0 text-white hover:opacity-90`},e.createElement(f,{href:"#admissions"},"Enroll Now ",e.createElement(v,{className:"ml-2 h-4 w-4"})))),e.createElement("div",{className:"p-8 md:p-12 bg-white"},e.createElement("h4",{className:"mb-6 text-lg font-semibold text-gray-900"},"What Your Child Gains"),e.createElement("ul",{className:"space-y-4"},a.highlights.map((t,l)=>e.createElement(i.li,{key:t,initial:{opacity:0,x:-10},animate:{opacity:1,x:0},transition:{delay:l*.08},className:"flex items-start gap-3"},e.createElement("div",{className:`mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full ${a.color}`},e.createElement(b,{className:"h-3 w-3 text-white"})),e.createElement("span",{className:"text-gray-700"},t)))))))))),e.createElement(i.div,{className:"mt-12 grid grid-cols-2 gap-4 md:grid-cols-4",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6,delay:.3},viewport:{once:!0}},n.map((t,l)=>e.createElement(i.div,{key:t.title,whileHover:{y:-6,scale:1.02},transition:{type:"spring",stiffness:300},onClick:()=>o(l),className:"cursor-pointer"},e.createElement(d,{className:`border-2 transition-all ${r===l?`border-current ${t.textColor} shadow-md`:"border-transparent"}`},e.createElement(x,{className:`flex flex-col items-center gap-3 rounded-lg p-6 text-center ${t.lightColor}`},e.createElement("div",{className:`flex h-14 w-14 items-center justify-center rounded-2xl ${t.color}`},(()=>{var c;const h=(c=m[t.icon])!==null&&c!==void 0?c:s;return e.createElement(h,{className:"h-7 w-7 text-white"})})()),e.createElement("div",null,e.createElement("div",{className:"text-sm font-semibold text-gray-900"},t.title),e.createElement("div",{className:`text-xs font-medium ${t.textColor}`},t.ages)))))))))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as a}from"framer-motion";import{Badge as c}from"../../../components/ui/badge";import{Quote as d,Star as x}from"lucide-react";import e from"react";export const TestimonialsSection=({badge:l,heading:r,headingHighlight:i,lead:o,items:n})=>e.createElement("section",{id:"testimonials",className:"overflow-hidden bg-white py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(a.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(c,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},l),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},r," ",e.createElement("span",{className:"text-blue-700"},i)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},o)),e.createElement("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3"},n.map((t,m)=>e.createElement(a.div,{key:t.id,className:"group relative overflow-hidden rounded-3xl border border-gray-100 bg-white p-7 shadow-sm transition-all duration-300 hover:shadow-xl",initial:{opacity:0,y:40},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:m*.07},viewport:{once:!0},whileHover:{y:-4}},e.createElement("div",{className:`pointer-events-none absolute top-0 right-0 h-24 w-24 rounded-bl-full bg-linear-to-br ${t.gradientFrom} ${t.gradientTo} opacity-5 transition-opacity group-hover:opacity-10`}),e.createElement("div",{className:"mb-4 flex gap-1"},[...Array(5)].map((g,s)=>e.createElement(x,{key:s,className:"h-4 w-4 fill-yellow-400 text-yellow-400"}))),e.createElement(d,{className:"mb-3 h-7 w-7 text-blue-100"}),e.createElement("p",{className:"mb-6 text-sm leading-relaxed text-gray-600 italic"},"\u201C",t.quote,"\u201D"),e.createElement("div",{className:"flex items-center gap-3"},e.createElement("div",{className:`flex h-11 w-11 shrink-0 items-center justify-center rounded-full bg-linear-to-br ${t.gradientFrom} ${t.gradientTo} text-sm font-bold text-white`},t.initials),e.createElement("div",null,e.createElement("div",{className:"text-sm font-semibold text-gray-900"},t.name),e.createElement("div",{className:"text-xs text-gray-400"},t.role))))))));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";import{motion as r}from"framer-motion";import{Badge as g}from"../../../components/ui/badge";import{CheckCircle as h,Award as x,Shield as w,BookOpen as n,Users as v,Heart as E,Globe as N,Star as f,Zap as k}from"lucide-react";import e from"react";export const WhyChooseUsSection=({badge:c,features:l,highlights:m,lead:d,paragraph:p,title:u})=>{const[y,b]=[l.slice(0,2),l.slice(2)],s={award:x,shield:w,"book-open":n,users:v,heart:E,globe:N,star:f,zap:k};return e.createElement("section",{id:"why-choose-us",className:"overflow-hidden bg-slate-50 py-24"},e.createElement("div",{className:"container mx-auto px-4"},e.createElement(r.div,{className:"mb-16 text-center",initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:!0}},e.createElement(g,{className:"mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100"},c),e.createElement("h2",{className:"mb-5 text-4xl font-bold text-gray-900 md:text-5xl"},u," ",e.createElement("span",{className:"text-blue-700"},d)),e.createElement("p",{className:"mx-auto max-w-2xl text-lg leading-relaxed text-gray-500"},p)),e.createElement("div",{className:"mb-8 grid grid-cols-1 gap-5 md:grid-cols-2 lg:grid-cols-4"},y.map((t,o)=>e.createElement(r.div,{key:t.title,className:"group relative overflow-hidden rounded-3xl border border-gray-100 bg-white p-8 shadow-sm transition-shadow duration-300 hover:shadow-xl lg:col-span-2",initial:{opacity:0,y:40},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:o*.1},viewport:{once:!0},whileHover:{y:-4}},e.createElement("div",{className:"pointer-events-none absolute inset-0 bg-linear-to-br from-blue-50 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"}),e.createElement("div",{className:"mb-5 inline-flex h-14 w-14 items-center justify-center rounded-2xl bg-gray-50 transition-transform duration-300 group-hover:scale-110"},(()=>{var a;const i=(a=s[t.icon])!==null&&a!==void 0?a:n;return e.createElement(i,{className:`h-7 w-7 ${t.color}`})})()),e.createElement("h3",{className:"mb-3 text-xl font-bold text-gray-900"},t.title),e.createElement("p",{className:"leading-relaxed text-gray-500"},t.description))),b.map((t,o)=>e.createElement(r.div,{key:t.title,className:"group relative overflow-hidden rounded-2xl border border-gray-100 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-lg",initial:{opacity:0,y:40},whileInView:{opacity:1,y:0},transition:{duration:.5,delay:(o+2)*.08},viewport:{once:!0},whileHover:{y:-3}},e.createElement("div",{className:"pointer-events-none absolute inset-0 bg-linear-to-br from-blue-50 to-transparent opacity-0 transition-opacity duration-300 group-hover:opacity-100"}),e.createElement("div",{className:"mb-4 inline-flex h-11 w-11 items-center justify-center rounded-xl bg-gray-50 transition-transform duration-300 group-hover:scale-110"},(()=>{var a;const i=(a=s[t.icon])!==null&&a!==void 0?a:n;return e.createElement(i,{className:`h-5 w-5 ${t.color}`})})()),e.createElement("h3",{className:"mb-2 font-bold text-gray-900"},t.title),e.createElement("p",{className:"text-sm leading-relaxed text-gray-500"},t.description)))),e.createElement(r.div,{className:"flex flex-wrap items-center justify-center gap-3 border-t border-gray-200 py-8",initial:{opacity:0},whileInView:{opacity:1},transition:{duration:.6,delay:.5},viewport:{once:!0}},m.map(t=>e.createElement(r.div,{key:t.id,className:"flex items-center gap-2 rounded-full border border-blue-100 bg-white px-4 py-2 text-sm font-medium text-blue-800 shadow-sm",whileHover:{scale:1.05},transition:{type:"spring",stiffness:400}},e.createElement(h,{className:"h-4 w-4 text-blue-500"}),t.content)))))};
|