@appcorp/shadcn 1.2.0 → 2.0.0

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.
Files changed (231) hide show
  1. package/components/app-sidebar.js +16 -23
  2. package/components/audio.js +11 -19
  3. package/components/dashboard.js +27 -65
  4. package/components/drawer-generic.js +20 -28
  5. package/components/enhanced-checkbox.js +10 -57
  6. package/components/enhanced-combobox.js +99 -143
  7. package/components/enhanced-drawer-footer.js +22 -31
  8. package/components/enhanced-drawer-header.js +6 -14
  9. package/components/enhanced-dropzone-impl.d.ts +32 -0
  10. package/components/enhanced-dropzone-impl.js +218 -0
  11. package/components/enhanced-dropzone.d.ts +2 -63
  12. package/components/enhanced-dropzone.js +6 -294
  13. package/components/enhanced-input.js +10 -57
  14. package/components/enhanced-label.js +6 -52
  15. package/components/enhanced-radio.js +12 -20
  16. package/components/enhanced-select.js +13 -61
  17. package/components/enhanced-slider.js +11 -58
  18. package/components/enhanced-switch.js +11 -58
  19. package/components/enhanced-table-footer-action.js +11 -19
  20. package/components/enhanced-table-footer-page.js +16 -24
  21. package/components/enhanced-table-footer-pagination.js +11 -21
  22. package/components/enhanced-table-header-action.js +22 -30
  23. package/components/enhanced-table-header-search.js +9 -17
  24. package/components/enhanced-table.js +125 -153
  25. package/components/enhanced-textarea.js +10 -57
  26. package/components/field.d.ts +1 -1
  27. package/components/field.js +31 -88
  28. package/components/image-resize-dialog.js +61 -159
  29. package/components/nav-main.js +32 -78
  30. package/components/nav-projects.js +37 -48
  31. package/components/nav-user.js +41 -51
  32. package/components/show-toast.js +5 -9
  33. package/components/sidebar.d.ts +1 -1
  34. package/components/sidebar.js +115 -184
  35. package/components/team-switcher.js +36 -47
  36. package/components/theme-provider.js +36 -84
  37. package/components/timeline.js +12 -20
  38. package/components/tooltip.js +10 -59
  39. package/components/ui/accordion.js +17 -67
  40. package/components/ui/alert-dialog.js +32 -89
  41. package/components/ui/alert.d.ts +1 -1
  42. package/components/ui/alert.js +14 -63
  43. package/components/ui/area-chart-v1-impl.d.ts +19 -0
  44. package/components/ui/area-chart-v1-impl.js +75 -0
  45. package/components/ui/area-chart-v1.d.ts +2 -19
  46. package/components/ui/area-chart-v1.js +4 -113
  47. package/components/ui/aspect-ratio.js +3 -39
  48. package/components/ui/avatar.js +13 -62
  49. package/components/ui/badge.d.ts +2 -2
  50. package/components/ui/badge.js +7 -55
  51. package/components/ui/breadcrumb.js +27 -80
  52. package/components/ui/button.d.ts +2 -2
  53. package/components/ui/button.js +10 -58
  54. package/components/ui/calendar-impl.d.ts +8 -0
  55. package/components/ui/calendar-impl.js +55 -0
  56. package/components/ui/calendar.d.ts +2 -8
  57. package/components/ui/calendar.js +5 -108
  58. package/components/ui/card.js +21 -73
  59. package/components/ui/carousel-impl.d.ts +18 -0
  60. package/components/ui/carousel-impl.js +117 -0
  61. package/components/ui/carousel.d.ts +6 -18
  62. package/components/ui/carousel.js +8 -170
  63. package/components/ui/chart-impl.d.ts +62 -0
  64. package/components/ui/chart-impl.js +162 -0
  65. package/components/ui/chart.d.ts +7 -62
  66. package/components/ui/chart.js +9 -219
  67. package/components/ui/checkbox.js +10 -57
  68. package/components/ui/collapsible.js +5 -43
  69. package/components/ui/combobox.js +22 -58
  70. package/components/ui/command-impl.d.ts +80 -0
  71. package/components/ui/command-impl.js +63 -0
  72. package/components/ui/command.d.ts +9 -80
  73. package/components/ui/command.js +12 -117
  74. package/components/ui/context-menu.js +41 -102
  75. package/components/ui/dialog.js +28 -84
  76. package/components/ui/drawer-impl.d.ts +22 -0
  77. package/components/ui/drawer-impl.js +56 -0
  78. package/components/ui/drawer.d.ts +10 -22
  79. package/components/ui/drawer.js +13 -111
  80. package/components/ui/dropdown-menu.js +41 -102
  81. package/components/ui/form.d.ts +4 -2
  82. package/components/ui/form.js +41 -95
  83. package/components/ui/hover-card.js +9 -58
  84. package/components/ui/input-otp-impl.d.ts +34 -0
  85. package/components/ui/input-otp-impl.js +43 -0
  86. package/components/ui/input-otp.d.ts +4 -34
  87. package/components/ui/input-otp.js +7 -92
  88. package/components/ui/input.js +6 -53
  89. package/components/ui/label.d.ts +1 -1
  90. package/components/ui/label.js +9 -56
  91. package/components/ui/language-selector.js +17 -55
  92. package/components/ui/menubar.js +46 -108
  93. package/components/ui/navigation-menu.d.ts +1 -1
  94. package/components/ui/navigation-menu.js +29 -84
  95. package/components/ui/pagination.js +30 -83
  96. package/components/ui/popover.js +10 -60
  97. package/components/ui/progress.js +8 -55
  98. package/components/ui/radio-group.js +12 -60
  99. package/components/ui/resizable-impl.d.ts +24 -0
  100. package/components/ui/resizable-impl.js +27 -0
  101. package/components/ui/resizable.d.ts +3 -24
  102. package/components/ui/resizable.js +6 -78
  103. package/components/ui/scroll-area.js +10 -58
  104. package/components/ui/select.js +34 -90
  105. package/components/ui/separator.js +7 -54
  106. package/components/ui/sheet.d.ts +1 -1
  107. package/components/ui/sheet.js +30 -86
  108. package/components/ui/skeleton.js +5 -21
  109. package/components/ui/slider.js +10 -57
  110. package/components/ui/sonner.js +7 -24
  111. package/components/ui/switch.js +8 -55
  112. package/components/ui/table.js +27 -81
  113. package/components/ui/tabs.js +14 -64
  114. package/components/ui/textarea.js +6 -53
  115. package/components/ui/theme-switcher.js +41 -91
  116. package/components/ui/toggle.d.ts +2 -2
  117. package/components/ui/toggle.js +9 -57
  118. package/data/admin-dashboard.js +16 -19
  119. package/hooks/use-enhanced-combobox.js +47 -124
  120. package/hooks/use-mobile.js +8 -44
  121. package/hooks/use-outside-click.js +6 -10
  122. package/lib/themes.js +1 -4
  123. package/lib/toast-utils.js +78 -120
  124. package/lib/utils.js +4 -11
  125. package/package.json +9 -90
  126. package/utils/transform-breadcrumbs.js +4 -8
  127. package/utils/transform-navitems.js +7 -22
  128. package/components/aceternity-ui/apple-cards-carousel.d.ts +0 -35
  129. package/components/aceternity-ui/apple-cards-carousel.js +0 -263
  130. package/components/shadcn-example/ai-chat/chat-interface.d.ts +0 -11
  131. package/components/shadcn-example/ai-chat/chat-interface.js +0 -70
  132. package/components/shadcn-example/ai-chat/index.d.ts +0 -38
  133. package/components/shadcn-example/ai-chat/index.js +0 -66
  134. package/components/shadcn-example/ai-chat/sidebar.d.ts +0 -15
  135. package/components/shadcn-example/ai-chat/sidebar.js +0 -68
  136. package/components/shadcn-example/ai-chat/welcome-section.d.ts +0 -12
  137. package/components/shadcn-example/ai-chat/welcome-section.js +0 -26
  138. package/components/shadcn-example/authentication/index.d.ts +0 -24
  139. package/components/shadcn-example/authentication/index.js +0 -59
  140. package/components/shadcn-example/authentication/user-auth-form.d.ts +0 -11
  141. package/components/shadcn-example/authentication/user-auth-form.js +0 -54
  142. package/components/shadcn-example/blog-detail-page/comment-section.d.ts +0 -15
  143. package/components/shadcn-example/blog-detail-page/comment-section.js +0 -83
  144. package/components/shadcn-example/blog-detail-page/content.d.ts +0 -7
  145. package/components/shadcn-example/blog-detail-page/content.js +0 -15
  146. package/components/shadcn-example/blog-detail-page/header.d.ts +0 -11
  147. package/components/shadcn-example/blog-detail-page/header.js +0 -36
  148. package/components/shadcn-example/blog-detail-page/index.d.ts +0 -25
  149. package/components/shadcn-example/blog-detail-page/index.js +0 -74
  150. package/components/shadcn-example/blog-page/blog-post-card.d.ts +0 -13
  151. package/components/shadcn-example/blog-page/blog-post-card.js +0 -30
  152. package/components/shadcn-example/blog-page/featured-post-sidebar-item.d.ts +0 -10
  153. package/components/shadcn-example/blog-page/featured-post-sidebar-item.js +0 -19
  154. package/components/shadcn-example/blog-page/index.d.ts +0 -20
  155. package/components/shadcn-example/blog-page/index.js +0 -36
  156. package/components/shadcn-example/coming-soon/countdown.d.ts +0 -2
  157. package/components/shadcn-example/coming-soon/countdown.js +0 -82
  158. package/components/shadcn-example/coming-soon/index.d.ts +0 -10
  159. package/components/shadcn-example/coming-soon/index.js +0 -41
  160. package/components/shadcn-io/color-picker/index.d.ts +0 -43
  161. package/components/shadcn-io/color-picker/index.js +0 -304
  162. package/components/shadcn-io/copy-button/index.d.ts +0 -16
  163. package/components/shadcn-io/copy-button/index.js +0 -121
  164. package/components/shadcn-io/dropzone/index.d.ts +0 -19
  165. package/components/shadcn-io/dropzone/index.js +0 -131
  166. package/components/shadcn-io/gantt/index.d.ts +0 -145
  167. package/components/shadcn-io/gantt/index.js +0 -766
  168. package/components/shadcn-io/table/index.d.ts +0 -60
  169. package/components/shadcn-io/table/index.js +0 -138
  170. package/templates/appcorp-v1/footer/bottom-bar.d.ts +0 -6
  171. package/templates/appcorp-v1/footer/bottom-bar.js +0 -25
  172. package/templates/appcorp-v1/footer/cta.d.ts +0 -6
  173. package/templates/appcorp-v1/footer/cta.js +0 -21
  174. package/templates/appcorp-v1/footer/footer-grid.d.ts +0 -14
  175. package/templates/appcorp-v1/footer/footer-grid.js +0 -52
  176. package/templates/appcorp-v1/footer/index.d.ts +0 -3
  177. package/templates/appcorp-v1/footer/index.js +0 -28
  178. package/templates/appcorp-v1/footer/newsletter.d.ts +0 -11
  179. package/templates/appcorp-v1/footer/newsletter.js +0 -28
  180. package/templates/appcorp-v1/footer/stats.d.ts +0 -6
  181. package/templates/appcorp-v1/footer/stats.js +0 -15
  182. package/templates/appcorp-v1/header/announcement-bar.d.ts +0 -3
  183. package/templates/appcorp-v1/header/announcement-bar.js +0 -15
  184. package/templates/appcorp-v1/header/dropdown-panel.d.ts +0 -8
  185. package/templates/appcorp-v1/header/dropdown-panel.js +0 -72
  186. package/templates/appcorp-v1/header/index.d.ts +0 -12
  187. package/templates/appcorp-v1/header/index.js +0 -16
  188. package/templates/appcorp-v1/header/mobile-menu.d.ts +0 -14
  189. package/templates/appcorp-v1/header/mobile-menu.js +0 -101
  190. package/templates/appcorp-v1/header/navigation-bar.d.ts +0 -3
  191. package/templates/appcorp-v1/header/navigation-bar.js +0 -117
  192. package/templates/appcorp-v1/header/social-button.d.ts +0 -7
  193. package/templates/appcorp-v1/header/social-button.js +0 -48
  194. package/templates/appcorp-v1/home.d.ts +0 -3
  195. package/templates/appcorp-v1/home.js +0 -27
  196. package/templates/data/appcorp-v1.d.ts +0 -93
  197. package/templates/data/appcorp-v1.js +0 -348
  198. package/templates/data/edupilotpro-v1.d.ts +0 -33
  199. package/templates/data/edupilotpro-v1.js +0 -116
  200. package/templates/data/school-v1.d.ts +0 -328
  201. package/templates/data/school-v1.js +0 -1563
  202. package/templates/edupilotpro-v1/feature-card.d.ts +0 -13
  203. package/templates/edupilotpro-v1/feature-card.js +0 -28
  204. package/templates/edupilotpro-v1/mockups/dashboard-mockup.d.ts +0 -3
  205. package/templates/edupilotpro-v1/mockups/dashboard-mockup.js +0 -55
  206. package/templates/school-v1/footer.d.ts +0 -3
  207. package/templates/school-v1/footer.js +0 -75
  208. package/templates/school-v1/index.d.ts +0 -18
  209. package/templates/school-v1/index.js +0 -60
  210. package/templates/school-v1/navigation.d.ts +0 -3
  211. package/templates/school-v1/navigation.js +0 -123
  212. package/templates/school-v1/sections/about.d.ts +0 -3
  213. package/templates/school-v1/sections/about.js +0 -49
  214. package/templates/school-v1/sections/admissions.d.ts +0 -3
  215. package/templates/school-v1/sections/admissions.js +0 -77
  216. package/templates/school-v1/sections/contact.d.ts +0 -3
  217. package/templates/school-v1/sections/contact.js +0 -67
  218. package/templates/school-v1/sections/faqs.d.ts +0 -3
  219. package/templates/school-v1/sections/faqs.js +0 -50
  220. package/templates/school-v1/sections/hero.d.ts +0 -3
  221. package/templates/school-v1/sections/hero.js +0 -132
  222. package/templates/school-v1/sections/management.d.ts +0 -3
  223. package/templates/school-v1/sections/management.js +0 -34
  224. package/templates/school-v1/sections/policies.d.ts +0 -3
  225. package/templates/school-v1/sections/policies.js +0 -127
  226. package/templates/school-v1/sections/programs.d.ts +0 -3
  227. package/templates/school-v1/sections/programs.js +0 -107
  228. package/templates/school-v1/sections/testimonials.d.ts +0 -3
  229. package/templates/school-v1/sections/testimonials.js +0 -46
  230. package/templates/school-v1/sections/why-choose-us.d.ts +0 -3
  231. package/templates/school-v1/sections/why-choose-us.js +0 -57
@@ -1,67 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ContactSection = void 0;
8
- var framer_motion_1 = require("framer-motion");
9
- var badge_1 = require("../../../components/ui/badge");
10
- var button_1 = require("../../../components/ui/button");
11
- var link_1 = __importDefault(require("next/link"));
12
- var lucide_react_1 = require("lucide-react");
13
- var react_1 = __importDefault(require("react"));
14
- var iconMap = {
15
- 'map-pin': lucide_react_1.MapPin,
16
- 'phone': lucide_react_1.Phone,
17
- 'mail': lucide_react_1.Mail,
18
- 'clock': lucide_react_1.Clock,
19
- 'facebook': lucide_react_1.Facebook,
20
- 'instagram': lucide_react_1.Instagram,
21
- 'twitter': lucide_react_1.Twitter,
22
- };
23
- var ContactSection = function (_a) {
24
- var badge = _a.badge, contactDetails = _a.contactDetails, ctaBullets = _a.ctaBullets, ctaLead = _a.ctaLead, ctaPrimaryHref = _a.ctaPrimaryHref, ctaPrimaryLabel = _a.ctaPrimaryLabel, ctaSecondaryHref = _a.ctaSecondaryHref, ctaSecondaryLabel = _a.ctaSecondaryLabel, ctaTitle = _a.ctaTitle, heading = _a.heading, headingHighlight = _a.headingHighlight, lead = _a.lead, mapEmbedSrc = _a.mapEmbedSrc, mapOpenLink = _a.mapOpenLink, socialLinks = _a.socialLinks;
25
- return (react_1.default.createElement("section", { id: "contact", className: "overflow-hidden bg-white py-24" },
26
- react_1.default.createElement("div", { className: "container mx-auto px-4" },
27
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-16 text-center", initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.6 }, viewport: { once: true } },
28
- react_1.default.createElement(badge_1.Badge, { className: "mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100" }, badge),
29
- react_1.default.createElement("h2", { className: "mb-5 text-4xl font-bold text-gray-900 md:text-5xl" },
30
- heading,
31
- " ",
32
- react_1.default.createElement("span", { className: "text-blue-700" }, headingHighlight)),
33
- react_1.default.createElement("p", { className: "mx-auto max-w-2xl text-lg leading-relaxed text-gray-500" }, lead)),
34
- react_1.default.createElement("div", { className: "grid grid-cols-1 gap-10 lg:grid-cols-2" },
35
- react_1.default.createElement(framer_motion_1.motion.div, { initial: { opacity: 0, x: -30 }, whileInView: { opacity: 1, x: 0 }, transition: { duration: 0.5 }, viewport: { once: true } },
36
- react_1.default.createElement("div", { className: "mb-8 grid grid-cols-1 gap-4 sm:grid-cols-2" }, contactDetails.map(function (item) { return (react_1.default.createElement("div", { key: item.label, className: "rounded-2xl border border-gray-100 bg-slate-50 p-5 transition-shadow hover:shadow-md" },
37
- react_1.default.createElement("div", { className: "mb-3 inline-flex h-10 w-10 items-center justify-center rounded-xl ".concat(item.bg) }, (function () {
38
- var Icon = iconMap[item.icon];
39
- return Icon ? (react_1.default.createElement(Icon, { className: "h-5 w-5 ".concat(item.color) })) : null;
40
- })()),
41
- react_1.default.createElement("div", { className: "mb-1 text-xs font-semibold tracking-wider text-gray-400 uppercase" }, item.label),
42
- item.href !== null ? (react_1.default.createElement(link_1.default, { href: item.href, className: "text-sm font-medium ".concat(item.color, " hover:underline") }, item.value)) : (react_1.default.createElement("div", { className: "text-sm font-medium text-gray-700" }, item.value)))); })),
43
- react_1.default.createElement("div", { className: "mb-8" },
44
- react_1.default.createElement("p", { className: "mb-3 text-sm font-semibold text-gray-700" }, "Follow Us"),
45
- react_1.default.createElement("div", { className: "flex gap-3" }, socialLinks.map(function (s) { return (react_1.default.createElement(link_1.default, { key: s.label, href: s.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": s.label }, (function () {
46
- var Icon = iconMap[s.icon];
47
- return Icon ? (react_1.default.createElement(Icon, { className: "h-5 w-5 text-gray-600" })) : null;
48
- })())); }))),
49
- react_1.default.createElement(framer_motion_1.motion.div, { className: "overflow-hidden rounded-2xl border border-gray-100 shadow-sm", initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: 0.2 }, viewport: { once: true } },
50
- react_1.default.createElement("iframe", { className: "rounded-2xl", src: mapEmbedSrc, width: "800", height: "250", loading: "lazy" }),
51
- react_1.default.createElement("div", { className: "flex items-center gap-2 bg-slate-50 px-4 py-2.5" },
52
- react_1.default.createElement(lucide_react_1.MapPin, { className: "h-4 w-4 text-blue-600" }),
53
- react_1.default.createElement(link_1.default, { href: mapOpenLink, className: "text-xs font-medium text-blue-700 hover:underline" }, "Open in Google Maps")))),
54
- react_1.default.createElement(framer_motion_1.motion.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: 0.5, delay: 0.1 }, viewport: { once: true } },
55
- react_1.default.createElement("div", null,
56
- react_1.default.createElement("h3", { className: "mb-4 text-2xl font-bold" }, ctaTitle),
57
- react_1.default.createElement("p", { className: "mb-6 leading-relaxed text-blue-200" }, ctaLead),
58
- react_1.default.createElement("ul", { className: "mb-8 space-y-2" }, ctaBullets.map(function (item) { return (react_1.default.createElement("li", { key: item, className: "flex items-center gap-2 text-sm text-blue-100" },
59
- react_1.default.createElement("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-yellow-400" }),
60
- item)); }))),
61
- react_1.default.createElement("div", { className: "flex flex-col gap-3 sm:flex-row" },
62
- react_1.default.createElement(button_1.Button, { className: "flex-1 bg-yellow-400 font-bold text-blue-900 hover:bg-yellow-300" },
63
- react_1.default.createElement(link_1.default, { href: ctaPrimaryHref || "#" }, ctaPrimaryLabel)),
64
- react_1.default.createElement(button_1.Button, { asChild: true, variant: "outline", className: "flex-1 border-white/40 bg-white/10 text-white hover:bg-white/20" },
65
- react_1.default.createElement(link_1.default, { href: ctaSecondaryHref || "#" }, ctaSecondaryLabel))))))));
66
- };
67
- exports.ContactSection = ContactSection;
@@ -1,3 +0,0 @@
1
- import { FAQsData } from "../../data/school-v1";
2
- import { FC } from "react";
3
- export declare const FAQsSection: FC<FAQsData>;
@@ -1,50 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.FAQsSection = void 0;
8
- var framer_motion_1 = require("framer-motion");
9
- var accordion_1 = require("../../../components/ui/accordion");
10
- var badge_1 = require("../../../components/ui/badge");
11
- var lucide_react_1 = require("lucide-react");
12
- var react_1 = __importDefault(require("react"));
13
- var iconMap = {
14
- 'help': lucide_react_1.HelpCircle,
15
- 'users': lucide_react_1.Users,
16
- 'graduation-cap': lucide_react_1.GraduationCap,
17
- 'calendar': lucide_react_1.Calendar,
18
- 'book-open': lucide_react_1.BookOpen,
19
- 'heart': lucide_react_1.Heart,
20
- 'shield': lucide_react_1.Shield,
21
- 'star': lucide_react_1.Star,
22
- 'credit-card': lucide_react_1.CreditCard,
23
- 'bus': lucide_react_1.Bus,
24
- };
25
- var FAQsSection = function (_a) {
26
- var badge = _a.badge, heading = _a.heading, headingHighlight = _a.headingHighlight, items = _a.items, lead = _a.lead;
27
- return (react_1.default.createElement("section", { id: "faqs", className: "overflow-hidden bg-slate-50 py-24" },
28
- react_1.default.createElement("div", { className: "container mx-auto px-4" },
29
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-16 text-center", initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.6 }, viewport: { once: true } },
30
- react_1.default.createElement(badge_1.Badge, { className: "mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100" }, badge),
31
- react_1.default.createElement("h2", { className: "mb-5 text-4xl font-bold text-gray-900 md:text-5xl" },
32
- heading,
33
- " ",
34
- react_1.default.createElement("span", { className: "text-blue-700" }, headingHighlight)),
35
- react_1.default.createElement("p", { className: "mx-auto max-w-2xl text-lg leading-relaxed text-gray-500" }, lead)),
36
- react_1.default.createElement("div", { className: "mx-auto max-w-3xl" },
37
- react_1.default.createElement(accordion_1.Accordion, { type: "single", collapsible: true, className: "space-y-3" }, items.map(function (faq, i) { return (react_1.default.createElement(framer_motion_1.motion.div, { key: faq.id, initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.4, delay: i * 0.05 }, viewport: { once: true } },
38
- react_1.default.createElement(accordion_1.AccordionItem, { value: faq.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" },
39
- react_1.default.createElement(accordion_1.AccordionTrigger, { className: "px-4 py-5 hover:no-underline" },
40
- react_1.default.createElement("div", { className: "flex items-start gap-3 text-left" },
41
- react_1.default.createElement("div", { className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-blue-50" }, (function () {
42
- var Icon = iconMap[faq.icon];
43
- return react_1.default.createElement(Icon, { className: "h-4 w-4 text-blue-600" });
44
- })()),
45
- react_1.default.createElement("div", null,
46
- react_1.default.createElement(badge_1.Badge, { variant: "outline", className: "mb-1 border-blue-200 text-xs text-blue-600" }, faq.category),
47
- react_1.default.createElement("div", { className: "font-semibold text-gray-900" }, faq.question)))),
48
- react_1.default.createElement(accordion_1.AccordionContent, { className: "pr-4 pb-5 pl-15 text-sm leading-relaxed text-gray-600" }, faq.answer)))); }))))));
49
- };
50
- exports.FAQsSection = FAQsSection;
@@ -1,3 +0,0 @@
1
- import { FC } from "react";
2
- import { type HeroData } from "../../data/school-v1";
3
- export declare const HeroSection: FC<HeroData>;
@@ -1,132 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- var __importDefault = (this && this.__importDefault) || function (mod) {
37
- return (mod && mod.__esModule) ? mod : { "default": mod };
38
- };
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.HeroSection = void 0;
41
- var react_1 = __importStar(require("react"));
42
- var link_1 = __importDefault(require("next/link"));
43
- var framer_motion_1 = require("framer-motion");
44
- var lucide_react_1 = require("lucide-react");
45
- var button_1 = require("../../../components/ui/button");
46
- var school_v1_1 = require("../../data/school-v1");
47
- var statIcons = {
48
- award: lucide_react_1.Award,
49
- users: lucide_react_1.Users,
50
- building: lucide_react_1.Building2,
51
- heart: lucide_react_1.Heart,
52
- };
53
- var textVariants = {
54
- enter: { opacity: 0, y: 40 },
55
- center: { opacity: 1, y: 0 },
56
- exit: { opacity: 0, y: -30 },
57
- };
58
- var slideVariants = {
59
- enter: function (direction) { return ({ x: direction > 0 ? "100%" : "-100%" }); },
60
- center: { x: 0 },
61
- exit: function (direction) { return ({ x: direction > 0 ? "-100%" : "100%" }); },
62
- };
63
- var HeroSection = function (_a) {
64
- var slides = _a.slides, stats = _a.stats;
65
- var _b = (0, react_1.useState)(0), current = _b[0], setCurrent = _b[1];
66
- var _c = (0, react_1.useState)(1), direction = _c[0], setDirection = _c[1];
67
- var _d = (0, react_1.useState)(false), isPaused = _d[0], setIsPaused = _d[1];
68
- var paginate = (0, react_1.useCallback)(function (newDirection) {
69
- setDirection(newDirection);
70
- setCurrent(function (prev) { return (prev + newDirection + slides.length) % slides.length; });
71
- }, [slides.length]);
72
- (0, react_1.useEffect)(function () {
73
- if (isPaused)
74
- return;
75
- var timer = setInterval(function () { return paginate(1); }, 5500);
76
- return function () { return clearInterval(timer); };
77
- }, [isPaused, paginate]);
78
- var slide = slides[current];
79
- return (react_1.default.createElement("section", { id: "home", className: "relative overflow-hidden bg-blue-950", style: { height: "75vh", minHeight: "560px" }, onMouseEnter: function () { return setIsPaused(true); }, onMouseLeave: function () { return setIsPaused(false); } },
80
- react_1.default.createElement(framer_motion_1.AnimatePresence, { initial: false, custom: direction },
81
- react_1.default.createElement(framer_motion_1.motion.div, { key: slide.id, custom: direction, variants: slideVariants, initial: "enter", animate: "center", exit: "exit", transition: { duration: 0.85, ease: [0.32, 0.72, 0, 1] }, className: "absolute inset-0 bg-linear-to-br ".concat(slide.gradient) },
82
- react_1.default.createElement("img", { src: slide.imageUrl, alt: "", role: "presentation", className: "absolute inset-0 h-full w-full object-cover opacity-20" }),
83
- react_1.default.createElement("div", { className: "absolute inset-0 opacity-60", style: { background: slide.pattern } }),
84
- react_1.default.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(ellipse_at_bottom_left,rgba(255,255,255,0.06)_0%,transparent_55%)]" }),
85
- react_1.default.createElement("div", { className: "absolute top-10 right-10 h-72 w-72 rounded-full bg-white/5 blur-3xl" }),
86
- react_1.default.createElement("div", { className: "absolute bottom-10 left-20 h-56 w-56 rounded-full bg-white/5 blur-2xl" }),
87
- react_1.default.createElement("div", { className: "absolute top-1/2 right-1/4 h-40 w-40 rounded-full border border-white/10" }),
88
- react_1.default.createElement("div", { className: "absolute top-1/3 right-1/3 h-64 w-64 rounded-full border border-white/5" }))),
89
- react_1.default.createElement("div", { className: "relative z-10 flex h-full flex-col" },
90
- react_1.default.createElement("div", { className: "flex flex-1 items-center" },
91
- react_1.default.createElement("div", { className: "container mx-auto px-6 md:px-12" },
92
- react_1.default.createElement("div", { className: "max-w-3xl" },
93
- react_1.default.createElement(framer_motion_1.AnimatePresence, { mode: "wait" },
94
- react_1.default.createElement(framer_motion_1.motion.div, { key: slide.id + "-content", initial: "enter", animate: "center", exit: "exit", variants: textVariants, transition: { duration: 0.6 } },
95
- react_1.default.createElement(framer_motion_1.motion.div, { variants: textVariants, transition: { duration: 0.5 }, className: "mb-2" },
96
- react_1.default.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" }, slide.badge)),
97
- react_1.default.createElement(framer_motion_1.motion.h1, { variants: textVariants, transition: { duration: 0.55, delay: 0.1 }, className: "mb-1 text-2xl leading-tight font-extrabold tracking-tight text-white md:text-5xl lg:text-6xl xl:text-7xl" }, slide.headline),
98
- react_1.default.createElement(framer_motion_1.motion.h1, { variants: textVariants, transition: { duration: 0.55, delay: 0.2 }, className: "mb-2 text-2xl leading-tight font-extrabold tracking-tight md:text-5xl lg:text-6xl xl:text-7xl ".concat(slide.accentColor) }, slide.subheadline),
99
- react_1.default.createElement(framer_motion_1.motion.p, { variants: textVariants, transition: { duration: 0.5, delay: 0.3 }, className: "mb-8 max-w-xl text-base leading-relaxed text-white/75 md:text-lg" }, slide.description),
100
- react_1.default.createElement(framer_motion_1.motion.div, { variants: textVariants, transition: { duration: 0.5, delay: 0.4 }, className: "flex flex-wrap gap-4" },
101
- react_1.default.createElement(button_1.Button, { asChild: true, size: "lg", className: "rounded-full bg-yellow-400 font-semibold text-gray-900 shadow-lg hover:bg-yellow-300" },
102
- react_1.default.createElement(link_1.default, { href: slide.primaryCtaHref }, slide.primaryCtaLabel)),
103
- react_1.default.createElement(button_1.Button, { asChild: true, 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" },
104
- react_1.default.createElement(link_1.default, { href: slide.secondaryCtaHref }, slide.secondaryCtaLabel)))))))),
105
- react_1.default.createElement(framer_motion_1.motion.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: 0.8, delay: 0.6 } },
106
- react_1.default.createElement("div", { className: "container mx-auto px-6 py-4 md:px-12" },
107
- react_1.default.createElement("div", { className: "grid grid-cols-2 gap-4 md:grid-cols-4" }, stats.map(function (stat, i) {
108
- var Icon = statIcons[stat.icon];
109
- return (react_1.default.createElement(framer_motion_1.motion.div, { key: stat.label, initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: 0.7 + i * 0.1 }, className: "flex items-center gap-3" },
110
- react_1.default.createElement("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-yellow-400/20" },
111
- react_1.default.createElement(Icon, { className: "h-5 w-5 text-yellow-400" })),
112
- react_1.default.createElement("div", null,
113
- react_1.default.createElement("div", { className: "text-lg leading-none font-bold text-white" }, stat.value),
114
- react_1.default.createElement("div", { className: "text-xs text-white/60" }, stat.label))));
115
- }))))),
116
- react_1.default.createElement("button", { onClick: function () { return paginate(-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" },
117
- react_1.default.createElement(lucide_react_1.ChevronLeft, { className: "h-6 w-6" })),
118
- react_1.default.createElement("button", { onClick: function () { return paginate(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" },
119
- react_1.default.createElement(lucide_react_1.ChevronRight, { className: "h-6 w-6" })),
120
- react_1.default.createElement("div", { className: "absolute bottom-20 left-6 z-20 hidden gap-2 md:left-12 md:block" }, school_v1_1.heroSlides.map(function (_, i) { return (react_1.default.createElement("button", { key: i, onClick: function () {
121
- setDirection(i > current ? 1 : -1);
122
- setCurrent(i);
123
- }, "aria-label": "Go to slide ".concat(i + 1), className: "h-2 mr-1 rounded-full transition-all duration-300 ".concat(i === current
124
- ? "w-8 bg-yellow-400"
125
- : "w-2 bg-white/40 hover:bg-white/70") })); })),
126
- react_1.default.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" },
127
- String(current + 1).padStart(2, "0"),
128
- " /",
129
- " ",
130
- String(school_v1_1.heroSlides.length).padStart(2, "0"))));
131
- };
132
- exports.HeroSection = HeroSection;
@@ -1,3 +0,0 @@
1
- import { ManagementData } from "../../data/school-v1";
2
- import { FC } from "react";
3
- export declare const ManagementSection: FC<ManagementData>;
@@ -1,34 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ManagementSection = void 0;
8
- var framer_motion_1 = require("framer-motion");
9
- var image_1 = __importDefault(require("next/image"));
10
- var badge_1 = require("../../../components/ui/badge");
11
- var lucide_react_1 = require("lucide-react");
12
- var react_1 = __importDefault(require("react"));
13
- var ManagementSection = function (_a) {
14
- var badge = _a.badge, heading = _a.heading, headingHighlight = _a.headingHighlight, lead = _a.lead, team = _a.team;
15
- return (react_1.default.createElement("section", { id: "management", className: "overflow-hidden bg-white py-24" },
16
- react_1.default.createElement("div", { className: "container mx-auto px-4" },
17
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-16 text-center", initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.6 }, viewport: { once: true } },
18
- react_1.default.createElement(badge_1.Badge, { className: "mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100" }, badge),
19
- react_1.default.createElement("h2", { className: "mb-5 text-4xl font-bold text-gray-900 md:text-5xl" },
20
- heading,
21
- " ",
22
- react_1.default.createElement("span", { className: "text-blue-700" }, headingHighlight)),
23
- react_1.default.createElement("p", { className: "mx-auto max-w-2xl text-lg leading-relaxed text-gray-500" }, lead)),
24
- react_1.default.createElement("div", { className: "grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5" }, team.map(function (member, i) { return (react_1.default.createElement(framer_motion_1.motion.div, { key: member.id, className: "flex flex-col items-center text-center", initial: { opacity: 1, y: 50 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: i * 0.1 }, viewport: { once: true } },
25
- react_1.default.createElement(framer_motion_1.motion.div, { className: "relative mb-5 h-24 w-24 rounded-full shadow-lg", whileHover: { scale: 1.08 }, transition: { type: "spring", stiffness: 300 } },
26
- react_1.default.createElement(image_1.default, { src: member.avatar, alt: member.name, fill: true, className: "rounded-full object-cover" })),
27
- react_1.default.createElement("h3", { className: "mb-0.5 font-bold text-gray-900" }, member.name),
28
- react_1.default.createElement("p", { className: "mb-3 text-xs font-semibold text-blue-700" }, member.title),
29
- react_1.default.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" },
30
- react_1.default.createElement(lucide_react_1.GraduationCap, { className: "h-3 w-3" }),
31
- member.qualifications),
32
- react_1.default.createElement("p", { className: "text-xs leading-relaxed text-gray-500" }, member.bio))); })))));
33
- };
34
- exports.ManagementSection = ManagementSection;
@@ -1,3 +0,0 @@
1
- import { FC } from "react";
2
- import type { PoliciesData } from "../../data/school-v1";
3
- export declare const PoliciesSection: FC<PoliciesData>;
@@ -1,127 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.PoliciesSection = void 0;
38
- var react_1 = __importStar(require("react"));
39
- var framer_motion_1 = require("framer-motion");
40
- var lucide_react_1 = require("lucide-react");
41
- var badge_1 = require("../../../components/ui/badge");
42
- var categoryIcons = {
43
- "book-open": lucide_react_1.BookOpen,
44
- "user-plus": lucide_react_1.UserPlus,
45
- "graduation-cap": lucide_react_1.GraduationCap,
46
- "credit-card": lucide_react_1.CreditCard,
47
- shield: lucide_react_1.Shield,
48
- info: lucide_react_1.Info,
49
- tag: lucide_react_1.Tag,
50
- };
51
- function AccordionItem(_a) {
52
- var section = _a.section, colorClass = _a.colorClass, bgClass = _a.bgClass, borderClass = _a.borderClass, bulletBg = _a.bulletBg;
53
- var _b = (0, react_1.useState)(false), open = _b[0], setOpen = _b[1];
54
- return (react_1.default.createElement("div", { className: "self-start overflow-hidden rounded-xl border ".concat(borderClass, " bg-white") },
55
- react_1.default.createElement("button", { className: "flex w-full items-center justify-between gap-4 px-5 py-4 text-left", onClick: function () { return setOpen(function (o) { return !o; }); } },
56
- react_1.default.createElement("span", { className: "text-sm font-semibold text-gray-800" }, section.title),
57
- react_1.default.createElement(framer_motion_1.motion.div, { animate: { rotate: open ? 180 : 0 }, transition: { duration: 0.2 } },
58
- react_1.default.createElement(lucide_react_1.ChevronDown, { className: "h-4 w-4 shrink-0 ".concat(colorClass) }))),
59
- react_1.default.createElement(framer_motion_1.AnimatePresence, { initial: false }, open && (react_1.default.createElement(framer_motion_1.motion.div, { initial: { height: 0, opacity: 0 }, animate: { height: "auto", opacity: 1 }, exit: { height: 0, opacity: 0 }, transition: { duration: 0.25, ease: "easeInOut" } },
60
- react_1.default.createElement("div", { className: "border-t ".concat(borderClass, " ").concat(bgClass, " space-y-3 px-5 py-4") }, section.points.map(function (point, i) { return (react_1.default.createElement("div", { key: i, className: "flex gap-3" },
61
- react_1.default.createElement(lucide_react_1.CheckCircle, { className: "mt-0.5 h-4 w-4 shrink-0 ".concat(colorClass) }),
62
- react_1.default.createElement("div", null,
63
- react_1.default.createElement("p", { className: "text-sm leading-relaxed text-gray-700" }, point.text),
64
- point.sub && (react_1.default.createElement("ul", { className: "mt-2 space-y-1" }, point.sub.map(function (s) { return (react_1.default.createElement("li", { key: s.id, className: "flex items-start gap-2" },
65
- react_1.default.createElement("span", { className: "mt-2 h-1.5 w-1.5 shrink-0 rounded-full ".concat(bulletBg) }),
66
- react_1.default.createElement("span", { className: "text-sm text-gray-600" }, s.text))); })))))); })))))));
67
- }
68
- function UniformPanel(_a) {
69
- var colorClass = _a.colorClass, bgClass = _a.bgClass, borderClass = _a.borderClass, bulletBg = _a.bulletBg, uniformData = _a.uniformData;
70
- var _b = (0, react_1.useState)("Summer"), season = _b[0], setSeason = _b[1];
71
- var current = uniformData.find(function (u) { return u.season === season; });
72
- return (react_1.default.createElement("div", { className: "space-y-4" },
73
- react_1.default.createElement("div", { className: "flex w-fit gap-2 rounded-xl border border-gray-100 bg-white p-1" }, ["Summer", "Winter"].map(function (s) { return (react_1.default.createElement("button", { key: s, onClick: function () { return setSeason(s); }, className: "flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium transition-all ".concat(season === s
74
- ? "".concat(bgClass, " ").concat(colorClass, " shadow-sm")
75
- : "text-gray-500 hover:text-gray-700") },
76
- s === "Summer" ? (react_1.default.createElement(lucide_react_1.Sun, { className: "h-4 w-4" })) : (react_1.default.createElement(lucide_react_1.Snowflake, { className: "h-4 w-4" })),
77
- s)); })),
78
- react_1.default.createElement("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2" }, current.variants.map(function (variant, i) { return (react_1.default.createElement(framer_motion_1.motion.div, { key: "".concat(variant.gender, "-").concat(variant.classes), initial: { opacity: 0, y: 12 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.2, delay: i * 0.06 }, className: "rounded-xl border ".concat(borderClass, " bg-white p-4") },
79
- react_1.default.createElement("div", { className: "mb-3 flex items-center gap-2" },
80
- react_1.default.createElement("span", { className: "rounded-md px-2 py-0.5 text-xs font-bold ".concat(bgClass, " ").concat(colorClass) }, variant.gender),
81
- react_1.default.createElement("span", { className: "text-xs text-gray-500" }, variant.classes)),
82
- react_1.default.createElement("ul", { className: "space-y-1.5" }, variant.items.map(function (item) { return (react_1.default.createElement("li", { key: item.id, className: "flex items-start gap-2" },
83
- react_1.default.createElement("span", { className: "mt-2 h-1.5 w-1.5 shrink-0 rounded-full ".concat(bulletBg) }),
84
- react_1.default.createElement("span", { className: "text-sm leading-relaxed text-gray-600" }, item.text))); })))); })),
85
- react_1.default.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.")));
86
- }
87
- var PoliciesSection = function (_a) {
88
- var badge = _a.badge, categories = _a.categories, highlights = _a.highlights, lead = _a.lead, paragraph = _a.paragraph, title = _a.title, uniforms = _a.uniforms;
89
- var _b = (0, react_1.useState)("overview"), activeTab = _b[0], setActiveTab = _b[1];
90
- var active = categories.find(function (c) { return c.id === activeTab; });
91
- var ActiveIcon = categoryIcons[active.icon];
92
- return (react_1.default.createElement("section", { id: "policies", className: "overflow-hidden bg-gray-50 py-24" },
93
- react_1.default.createElement("div", { className: "container mx-auto px-4" },
94
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-12 text-center", initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.6 }, viewport: { once: true } },
95
- react_1.default.createElement(badge_1.Badge, { className: "mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100" }, badge),
96
- react_1.default.createElement("h2", { className: "mb-5 text-4xl font-bold text-gray-900 md:text-5xl" },
97
- title,
98
- " & ",
99
- react_1.default.createElement("span", { className: "text-blue-700" }, lead)),
100
- react_1.default.createElement("p", { className: "mx-auto max-w-2xl text-lg leading-relaxed text-gray-500" }, paragraph)),
101
- react_1.default.createElement(framer_motion_1.motion.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: 0.6, delay: 0.15 }, viewport: { once: true } }, highlights.map(function (h) { return (react_1.default.createElement("div", { key: h.label, className: "rounded-2xl border border-blue-100 bg-white px-3 py-4 text-center shadow-sm" },
102
- react_1.default.createElement("div", { className: "text-2xl font-bold text-blue-700" }, h.value),
103
- react_1.default.createElement("div", { className: "mt-0.5 text-xs font-semibold text-gray-800" }, h.label),
104
- react_1.default.createElement("div", { className: "mt-0.5 text-xs text-gray-400" }, h.note))); })),
105
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-6 flex flex-wrap gap-2", initial: { opacity: 0, y: 16 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: 0.2 }, viewport: { once: true } }, categories.map(function (cat) {
106
- var Icon = categoryIcons[cat.icon];
107
- var isActive = cat.id === activeTab;
108
- return (react_1.default.createElement("button", { key: cat.id, onClick: function () { return setActiveTab(cat.id); }, className: "flex items-center gap-2 rounded-full border px-4 py-2 text-sm font-medium transition-all ".concat(isActive
109
- ? "".concat(cat.bgClass, " ").concat(cat.colorClass, " ").concat(cat.borderClass, " shadow-sm")
110
- : "border-gray-200 bg-white text-gray-500 hover:border-gray-300 hover:text-gray-700") },
111
- react_1.default.createElement(Icon, { className: "h-4 w-4" }),
112
- cat.label));
113
- })),
114
- react_1.default.createElement(framer_motion_1.AnimatePresence, { mode: "wait" },
115
- react_1.default.createElement(framer_motion_1.motion.div, { key: activeTab, initial: { opacity: 0, y: 16 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.25 } },
116
- react_1.default.createElement("div", { className: "mb-6 flex items-center gap-4 rounded-2xl border ".concat(active.borderClass, " ").concat(active.bgClass, " p-5") },
117
- react_1.default.createElement("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-xl border ".concat(active.borderClass, " bg-white") },
118
- react_1.default.createElement(ActiveIcon, { className: "h-6 w-6 ".concat(active.colorClass) })),
119
- react_1.default.createElement("div", null,
120
- react_1.default.createElement("h3", { className: "text-lg font-bold ".concat(active.colorClass) }, active.label),
121
- react_1.default.createElement("p", { className: "text-sm text-gray-500" }, active.description)),
122
- react_1.default.createElement(badge_1.Badge, { className: "ml-auto ".concat(active.badgeClass, " hover:").concat(active.badgeClass) }, activeTab === "uniform"
123
- ? "2 seasons"
124
- : "".concat(active.sections.length, " section").concat(active.sections.length !== 1 ? "s" : ""))),
125
- activeTab === "uniform" ? (react_1.default.createElement(UniformPanel, { colorClass: active.colorClass, bgClass: active.bgClass, borderClass: active.borderClass, bulletBg: active.bulletBg, uniformData: uniforms })) : (react_1.default.createElement("div", { className: "grid grid-cols-1 gap-3 lg:grid-cols-2" }, active.sections.map(function (section) { return (react_1.default.createElement(AccordionItem, { key: section.id, section: section, colorClass: active.colorClass, bgClass: active.bgClass, borderClass: active.borderClass, bulletBg: active.bulletBg })); }))))))));
126
- };
127
- exports.PoliciesSection = PoliciesSection;
@@ -1,3 +0,0 @@
1
- import { FC } from "react";
2
- import { ProgramsData } from "../../data/school-v1";
3
- export declare const ProgramsSection: FC<ProgramsData>;
@@ -1,107 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- var __importDefault = (this && this.__importDefault) || function (mod) {
37
- return (mod && mod.__esModule) ? mod : { "default": mod };
38
- };
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.ProgramsSection = void 0;
41
- var react_1 = __importStar(require("react"));
42
- var framer_motion_1 = require("framer-motion");
43
- var badge_1 = require("../../../components/ui/badge");
44
- var card_1 = require("../../../components/ui/card");
45
- var button_1 = require("../../../components/ui/button");
46
- var link_1 = __importDefault(require("next/link"));
47
- var lucide_react_1 = require("lucide-react");
48
- var ProgramsSection = function (_a) {
49
- var badge = _a.badge, lead = _a.lead, programs = _a.programs, title = _a.title;
50
- var _b = (0, react_1.useState)(0), activeIdx = _b[0], setActiveIdx = _b[1];
51
- var active = programs[activeIdx];
52
- var iconMap = {
53
- baby: lucide_react_1.Baby,
54
- "book-open": lucide_react_1.BookOpen,
55
- "graduation-cap": lucide_react_1.GraduationCap,
56
- user: lucide_react_1.User,
57
- };
58
- return (react_1.default.createElement("section", { id: "programs", className: "bg-gray-50 py-24" },
59
- react_1.default.createElement("div", { className: "container mx-auto px-4" },
60
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-14 text-center", initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.6 }, viewport: { once: true } },
61
- react_1.default.createElement(badge_1.Badge, { className: "mb-4 bg-blue-100 text-blue-700 hover:bg-blue-100" }, badge),
62
- react_1.default.createElement("h2", { className: "mb-4 text-4xl font-bold text-gray-900 md:text-5xl" }, title),
63
- react_1.default.createElement("p", { className: "mx-auto max-w-2xl text-lg text-gray-600" }, lead)),
64
- react_1.default.createElement(framer_motion_1.motion.div, { className: "mb-10 flex flex-wrap justify-center gap-3", initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: 0.2 }, viewport: { once: true } }, programs.map(function (p, i) { return (react_1.default.createElement("button", { key: p.title, onClick: function () { return setActiveIdx(i); }, className: "rounded-full px-5 py-2.5 text-sm font-medium transition-all ".concat(activeIdx === i
65
- ? "".concat(p.color, " text-white shadow-md")
66
- : "bg-white text-gray-600 shadow-sm hover:bg-gray-100") },
67
- p.title,
68
- react_1.default.createElement("span", { className: "ml-2 text-xs opacity-75" }, p.ages))); })),
69
- react_1.default.createElement(framer_motion_1.AnimatePresence, { mode: "wait" },
70
- react_1.default.createElement(framer_motion_1.motion.div, { key: activeIdx, initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -20 }, transition: { duration: 0.4 } },
71
- react_1.default.createElement(card_1.Card, { className: "overflow-hidden border-0 shadow-xl" },
72
- react_1.default.createElement("div", { className: "h-2 w-full ".concat(active.color) }),
73
- react_1.default.createElement(card_1.CardContent, { className: "p-0" },
74
- react_1.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2" },
75
- react_1.default.createElement("div", { className: "p-8 md:p-12 ".concat(active.lightColor) },
76
- react_1.default.createElement("div", { className: "mb-4 inline-flex items-center gap-2 rounded-full ".concat(active.color, " px-4 py-1.5 text-sm font-semibold text-white") },
77
- (function () {
78
- var _a;
79
- var Icon = (_a = iconMap[active.icon]) !== null && _a !== void 0 ? _a : lucide_react_1.BookOpen;
80
- return react_1.default.createElement(Icon, { className: "h-4 w-4" });
81
- })(),
82
- active.ages),
83
- react_1.default.createElement("h3", { className: "mb-4 text-2xl font-bold text-gray-900 md:text-3xl" }, active.title),
84
- react_1.default.createElement("p", { className: "mb-6 leading-relaxed text-gray-700" }, active.description),
85
- react_1.default.createElement(button_1.Button, { asChild: true, className: "".concat(active.color, " border-0 text-white hover:opacity-90") },
86
- react_1.default.createElement(link_1.default, { href: "#admissions" },
87
- "Enroll Now ",
88
- react_1.default.createElement(lucide_react_1.ArrowRight, { className: "ml-2 h-4 w-4" })))),
89
- react_1.default.createElement("div", { className: "p-8 md:p-12 bg-white" },
90
- react_1.default.createElement("h4", { className: "mb-6 text-lg font-semibold text-gray-900" }, "What Your Child Gains"),
91
- react_1.default.createElement("ul", { className: "space-y-4" }, active.highlights.map(function (hl, i) { return (react_1.default.createElement(framer_motion_1.motion.li, { key: hl, initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, transition: { delay: i * 0.08 }, className: "flex items-start gap-3" },
92
- react_1.default.createElement("div", { className: "mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full ".concat(active.color) },
93
- react_1.default.createElement(lucide_react_1.Check, { className: "h-3 w-3 text-white" })),
94
- react_1.default.createElement("span", { className: "text-gray-700" }, hl))); })))))))),
95
- react_1.default.createElement(framer_motion_1.motion.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: 0.6, delay: 0.3 }, viewport: { once: true } }, programs.map(function (program, index) { return (react_1.default.createElement(framer_motion_1.motion.div, { key: program.title, whileHover: { y: -6, scale: 1.02 }, transition: { type: "spring", stiffness: 300 }, onClick: function () { return setActiveIdx(index); }, className: "cursor-pointer" },
96
- react_1.default.createElement(card_1.Card, { className: "border-2 transition-all ".concat(activeIdx === index ? "border-current ".concat(program.textColor, " shadow-md") : "border-transparent") },
97
- react_1.default.createElement(card_1.CardContent, { className: "flex flex-col items-center gap-3 rounded-lg p-6 text-center ".concat(program.lightColor) },
98
- react_1.default.createElement("div", { className: "flex h-14 w-14 items-center justify-center rounded-2xl ".concat(program.color) }, (function () {
99
- var _a;
100
- var Icon = (_a = iconMap[program.icon]) !== null && _a !== void 0 ? _a : lucide_react_1.BookOpen;
101
- return react_1.default.createElement(Icon, { className: "h-7 w-7 text-white" });
102
- })()),
103
- react_1.default.createElement("div", null,
104
- react_1.default.createElement("div", { className: "text-sm font-semibold text-gray-900" }, program.title),
105
- react_1.default.createElement("div", { className: "text-xs font-medium ".concat(program.textColor) }, program.ages)))))); })))));
106
- };
107
- exports.ProgramsSection = ProgramsSection;
@@ -1,3 +0,0 @@
1
- import { TestimonialData } from "../../data/school-v1";
2
- import { FC } from "react";
3
- export declare const TestimonialsSection: FC<TestimonialData>;