@nextworks/blocks-templates 0.2.0-alpha.2 → 0.2.0-alpha.20
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/README.md +5 -3
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/templates/digitalagency/Page.d.ts +3 -0
- package/dist/templates/digitalagency/Page.d.ts.map +1 -1
- package/dist/templates/digitalagency/Page.jsx +35 -0
- package/dist/templates/digitalagency/PresetThemeVars.d.ts.map +1 -1
- package/dist/templates/digitalagency/PresetThemeVars.jsx +33 -0
- package/dist/templates/digitalagency/components/About.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/About.jsx +45 -0
- package/dist/templates/digitalagency/components/CTA.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/CTA.jsx +29 -0
- package/dist/templates/digitalagency/components/Contact.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Contact.jsx +92 -0
- package/dist/templates/digitalagency/components/Footer.d.ts +8 -0
- package/dist/templates/digitalagency/components/Footer.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Footer.jsx +60 -0
- package/dist/templates/digitalagency/components/Hero.d.ts +6 -0
- package/dist/templates/digitalagency/components/Hero.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Hero.jsx +64 -0
- package/dist/templates/digitalagency/components/Navbar.d.ts +22 -0
- package/dist/templates/digitalagency/components/Navbar.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Navbar.jsx +87 -0
- package/dist/templates/digitalagency/components/NetworkPattern.d.ts +7 -0
- package/dist/templates/digitalagency/components/NetworkPattern.d.ts.map +1 -0
- package/dist/templates/digitalagency/components/NetworkPattern.jsx +120 -0
- package/dist/templates/digitalagency/components/Portfolio.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Portfolio.jsx +112 -0
- package/dist/templates/digitalagency/components/Pricing.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Pricing.jsx +86 -0
- package/dist/templates/digitalagency/components/Process.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Process.jsx +42 -0
- package/dist/templates/digitalagency/components/Services.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Services.jsx +38 -0
- package/dist/templates/digitalagency/components/Team.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Team.jsx +16 -0
- package/dist/templates/digitalagency/components/Testimonials.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Testimonials.jsx +42 -0
- package/dist/templates/gallery/Page.d.ts +2 -0
- package/dist/templates/gallery/PresetThemeVars.d.ts +14 -0
- package/dist/templates/gallery/PresetThemeVars.d.ts.map +1 -1
- package/dist/templates/gallery/PresetThemeVars.jsx +36 -0
- package/dist/templates/gallery/page.d.ts.map +1 -1
- package/dist/templates/gallery/page.jsx +281 -0
- package/dist/templates/productlaunch/Page.d.ts.map +1 -1
- package/dist/templates/productlaunch/Page.jsx +44 -0
- package/dist/templates/productlaunch/PresetThemeVars.d.ts +17 -0
- package/dist/templates/productlaunch/PresetThemeVars.d.ts.map +1 -1
- package/dist/templates/productlaunch/PresetThemeVars.jsx +33 -0
- package/dist/templates/productlaunch/components/About.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/About.jsx +57 -0
- package/dist/templates/productlaunch/components/CTA.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/CTA.jsx +37 -0
- package/dist/templates/productlaunch/components/Contact.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Contact.jsx +95 -0
- package/dist/templates/productlaunch/components/FAQ.d.ts +5 -0
- package/dist/templates/productlaunch/components/FAQ.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/FAQ.jsx +59 -0
- package/dist/templates/productlaunch/components/Features.d.ts +5 -0
- package/dist/templates/productlaunch/components/Features.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Features.jsx +52 -0
- package/dist/templates/productlaunch/components/Footer.d.ts +5 -0
- package/dist/templates/productlaunch/components/Footer.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Footer.jsx +104 -0
- package/dist/templates/productlaunch/components/Hero.d.ts +5 -0
- package/dist/templates/productlaunch/components/Hero.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Hero.jsx +70 -0
- package/dist/templates/productlaunch/components/Navbar.d.ts +25 -0
- package/dist/templates/productlaunch/components/Navbar.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Navbar.jsx +84 -0
- package/dist/templates/productlaunch/components/Pricing.d.ts +5 -0
- package/dist/templates/productlaunch/components/Pricing.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Pricing.jsx +78 -0
- package/dist/templates/productlaunch/components/ProcessTimeline.d.ts +5 -0
- package/dist/templates/productlaunch/components/ProcessTimeline.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/ProcessTimeline.jsx +64 -0
- package/dist/templates/productlaunch/components/ServicesGrid.d.ts +5 -0
- package/dist/templates/productlaunch/components/ServicesGrid.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/ServicesGrid.jsx +42 -0
- package/dist/templates/productlaunch/components/Team.d.ts +5 -0
- package/dist/templates/productlaunch/components/Team.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Team.jsx +73 -0
- package/dist/templates/productlaunch/components/Testimonials.d.ts +6 -0
- package/dist/templates/productlaunch/components/Testimonials.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/Testimonials.jsx +57 -0
- package/dist/templates/productlaunch/components/TrustBadges.d.ts +5 -0
- package/dist/templates/productlaunch/components/TrustBadges.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/TrustBadges.jsx +51 -0
- package/dist/templates/saasdashboard/Page.d.ts +2 -0
- package/dist/templates/saasdashboard/Page.d.ts.map +1 -1
- package/dist/templates/saasdashboard/Page.jsx +37 -0
- package/dist/templates/saasdashboard/PresetThemeVars.d.ts.map +1 -1
- package/dist/templates/saasdashboard/PresetThemeVars.jsx +31 -0
- package/dist/templates/saasdashboard/components/Contact.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Contact.jsx +92 -0
- package/dist/templates/saasdashboard/components/Dashboard.d.ts.map +1 -0
- package/dist/templates/saasdashboard/components/Dashboard.jsx +170 -0
- package/dist/templates/saasdashboard/components/FAQ.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/FAQ.jsx +36 -0
- package/dist/templates/saasdashboard/components/Features.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Features.jsx +54 -0
- package/dist/templates/saasdashboard/components/Footer.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Footer.jsx +53 -0
- package/dist/templates/saasdashboard/components/Hero.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Hero.jsx +71 -0
- package/dist/templates/saasdashboard/components/Hero_mask.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Hero_mask.jsx +86 -0
- package/dist/templates/saasdashboard/components/Navbar.d.ts +25 -0
- package/dist/templates/saasdashboard/components/Navbar.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Navbar.jsx +85 -0
- package/dist/templates/saasdashboard/components/Pricing.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Pricing.jsx +66 -0
- package/dist/templates/saasdashboard/components/SmoothScroll.d.ts.map +1 -0
- package/dist/templates/saasdashboard/components/SmoothScroll.jsx +87 -0
- package/dist/templates/saasdashboard/components/Testimonials.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Testimonials.jsx +41 -0
- package/dist/templates/saasdashboard/components/TrustBadges.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/TrustBadges.jsx +38 -0
- package/package.json +34 -34
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import { ServicesGrid as SharedServicesGrid } from "@nextworks/blocks-sections";
|
|
5
|
+
/**
|
|
6
|
+
* Product Launch preset for ServicesGrid
|
|
7
|
+
*/
|
|
8
|
+
export function ServicesGrid() {
|
|
9
|
+
const servicesData = [
|
|
10
|
+
{
|
|
11
|
+
icon: "🤖",
|
|
12
|
+
title: "AI Automation Solutions",
|
|
13
|
+
description: "Streamline your business processes with intelligent automation that reduces manual work and increases efficiency by up to 80%.",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
icon: "📊",
|
|
17
|
+
title: "Predictive Analytics",
|
|
18
|
+
description: "Make data-driven decisions with AI-powered insights that predict trends, optimize operations, and maximize ROI.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
icon: "💬",
|
|
22
|
+
title: "Intelligent Chatbots",
|
|
23
|
+
description: "Enhance customer experience with AI chatbots that provide instant, accurate responses 24/7 and reduce support costs.",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
icon: "🔍",
|
|
27
|
+
title: "Smart Document Processing",
|
|
28
|
+
description: "Extract and analyze information from documents automatically, reducing processing time by 90% and improving accuracy.",
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
return (<SharedServicesGrid enableMotion={true} sectionHeading="AI-Powered Solutions" servicesData={servicesData} section={{ className: "py-20 md:py-24 lg:py-28 bg-white dark:bg-black" }} container={{ className: "max-w-6xl mx-auto px-6 md:px-8 lg:px-12" }} heading={{
|
|
32
|
+
className: "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white text-center mb-12 md:mb-16 font-outfit",
|
|
33
|
+
}} grid={{ className: "grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-10" }} card={{
|
|
34
|
+
className: "bg-white dark:bg-gray-800 p-8 md:p-10 rounded-xl border border-gray-200 dark:border-gray-700 shadow-lg hover:shadow-2xl hover:-translate-y-2 transition-all duration-300 group",
|
|
35
|
+
}} cardContent={{ className: "flex flex-col items-start h-full space-y-6" }} icon={{
|
|
36
|
+
className: "text-5xl md:text-6xl group-hover:scale-110 transition-transform duration-300",
|
|
37
|
+
}} title={{
|
|
38
|
+
className: "text-lg md:text-xl font-semibold text-gray-800 dark:text-white leading-tight font-outfit group-hover:text-purple-600 dark:group-hover:text-purple-400 transition-colors duration-300",
|
|
39
|
+
}} description={{
|
|
40
|
+
className: "text-sm md:text-base text-gray-600 dark:text-gray-300 leading-relaxed font-inter flex-1",
|
|
41
|
+
}} ariaLabel="IntelliOpAI services section"/>);
|
|
42
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Team.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/Team.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Team.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/Team.tsx"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAgB,IAAI,gCAgGnB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import { Team as SharedTeam } from "@nextworks/blocks-sections";
|
|
5
|
+
/**
|
|
6
|
+
* Product Launch preset for Team
|
|
7
|
+
*/
|
|
8
|
+
export function Team() {
|
|
9
|
+
const teamMembers = [
|
|
10
|
+
{
|
|
11
|
+
name: "Dr. Sarah Chen",
|
|
12
|
+
role: "Chief AI Officer",
|
|
13
|
+
bio: "Leading AI researcher with 15+ years in machine learning and neural networks. PhD from MIT.",
|
|
14
|
+
avatar: "👩🔬",
|
|
15
|
+
socialLinks: [
|
|
16
|
+
{ platform: "LinkedIn", url: "#", icon: "💼" },
|
|
17
|
+
{ platform: "Twitter", url: "#", icon: "🐦" },
|
|
18
|
+
{ platform: "GitHub", url: "#", icon: "💻" },
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "Marcus Rodriguez",
|
|
23
|
+
role: "Head of AI Engineering",
|
|
24
|
+
bio: "Full-stack AI engineer specializing in scalable ML systems and cloud infrastructure.",
|
|
25
|
+
avatar: "👨💻",
|
|
26
|
+
socialLinks: [
|
|
27
|
+
{ platform: "LinkedIn", url: "#", icon: "💼" },
|
|
28
|
+
{ platform: "GitHub", url: "#", icon: "💻" },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "Dr. Emily Watson",
|
|
33
|
+
role: "AI Research Director",
|
|
34
|
+
bio: "Expert in natural language processing and computer vision with 12+ years of research experience.",
|
|
35
|
+
avatar: "👩🎓",
|
|
36
|
+
socialLinks: [
|
|
37
|
+
{ platform: "LinkedIn", url: "#", icon: "💼" },
|
|
38
|
+
{ platform: "Twitter", url: "#", icon: "🐦" },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "Alex Kim",
|
|
43
|
+
role: "AI Product Manager",
|
|
44
|
+
bio: "Strategic leader focused on bringing AI solutions to market with deep understanding of business needs.",
|
|
45
|
+
avatar: "👨💼",
|
|
46
|
+
socialLinks: [
|
|
47
|
+
{ platform: "LinkedIn", url: "#", icon: "💼" },
|
|
48
|
+
{ platform: "Twitter", url: "#", icon: "🐦" },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
return (<SharedTeam teamHeadingText="Meet the AI Experts" teamSubheadingText="Our world-class team of AI researchers, engineers, and strategists working to revolutionize your business with cutting-edge artificial intelligence." teamMembers={teamMembers} section={{
|
|
53
|
+
className: "py-20 md:py-24 lg:py-28 bg-gray-50 dark:bg-gray-900",
|
|
54
|
+
}} container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-12" }} header={{ className: "space-y-16 items-center" }} heading={{
|
|
55
|
+
className: "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white text-center font-outfit",
|
|
56
|
+
}} subheading={{
|
|
57
|
+
className: "text-lg md:text-xl text-gray-600 dark:text-gray-300 opacity-90 leading-relaxed text-center max-w-4xl mx-auto font-inter",
|
|
58
|
+
}} grid={{
|
|
59
|
+
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 md:gap-10 w-full",
|
|
60
|
+
}} card={{
|
|
61
|
+
className: "bg-white dark:bg-gray-800 p-8 rounded-xl shadow-lg text-center transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl group border border-gray-200 dark:border-gray-700",
|
|
62
|
+
}} cardContent={{ className: "flex flex-col items-center space-y-6" }} avatar={{
|
|
63
|
+
className: "text-5xl md:text-6xl mb-3 group-hover:scale-110 transition-transform duration-300",
|
|
64
|
+
}} name={{
|
|
65
|
+
className: "text-lg md:text-xl font-bold text-gray-800 dark:text-white font-outfit group-hover:text-purple-600 dark:group-hover:text-purple-400 transition-colors duration-300",
|
|
66
|
+
}} role={{
|
|
67
|
+
className: "text-base font-semibold text-purple-600 dark:text-purple-400 font-inter",
|
|
68
|
+
}} bio={{
|
|
69
|
+
className: "text-sm md:text-base text-gray-600 dark:text-gray-300 opacity-90 leading-relaxed font-inter",
|
|
70
|
+
}} socialLinks={{ className: "flex gap-4 mt-4" }} socialLink={{
|
|
71
|
+
className: "text-xl text-purple-600 hover:text-purple-700 dark:text-purple-400 dark:hover:text-purple-300 transition-colors duration-200 hover:scale-110 transform",
|
|
72
|
+
}} ariaLabel="IntelliOpAI team section"/>);
|
|
73
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testimonials.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/Testimonials.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Testimonials.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/Testimonials.tsx"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,YAAY,gCAiF3B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import { Testimonials as SharedTestimonials } from "@nextworks/blocks-sections";
|
|
5
|
+
/**
|
|
6
|
+
* Product Launch preset for Testimonials
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export function Testimonials() {
|
|
10
|
+
const testimonials = [
|
|
11
|
+
{
|
|
12
|
+
testimonialText: "IntelliOpAI has completely transformed our workflow. The AI-powered automation saves us 40+ hours per week, and the accuracy is incredible.",
|
|
13
|
+
testimonialAuthor: " - Sarah Johnson, CEO at TechCorp",
|
|
14
|
+
testimonialAuthorInitials: "SJ",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
testimonialText: "The machine learning capabilities are outstanding. We've seen a 300% increase in productivity since implementing their AI solutions.",
|
|
18
|
+
testimonialAuthor: " - Michael Chen, CTO at InnovateLab",
|
|
19
|
+
testimonialAuthorInitials: "MC",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
testimonialText: "Game-changing technology! The AI insights have helped us make better decisions and scale our business faster than ever before.",
|
|
23
|
+
testimonialAuthor: " - Emily Rodriguez, VP Operations at GrowthCo",
|
|
24
|
+
testimonialAuthorInitials: "ER",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
testimonialText: "The implementation was seamless and the results exceeded our expectations. Our team loves working with the AI-powered tools.",
|
|
28
|
+
testimonialAuthor: " - David Kim, Head of Engineering at StartupXYZ",
|
|
29
|
+
testimonialAuthorInitials: "DK",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
testimonialText: "IntelliOpAI's natural language processing capabilities have revolutionized how we handle customer support. Response times improved by 80%.",
|
|
33
|
+
testimonialAuthor: " - Lisa Wang, Customer Success Director at ServicePro",
|
|
34
|
+
testimonialAuthorInitials: "LW",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
testimonialText: "The predictive analytics features are phenomenal. We can now forecast trends and make data-driven decisions with confidence.",
|
|
38
|
+
testimonialAuthor: " - James Thompson, Data Science Lead at AnalyticsPlus",
|
|
39
|
+
testimonialAuthorInitials: "JT",
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
return (<SharedTestimonials id="testimonials" testimonials={testimonials} testimonialSectionHeader="What Our AI Customers Say" section={{
|
|
43
|
+
className: "py-20 md:py-24 lg:py-28 bg-gray-50 dark:bg-gray-900",
|
|
44
|
+
}} container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-12" }} header={{ className: "text-center mb-16" }} heading={{
|
|
45
|
+
className: "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white text-center font-outfit",
|
|
46
|
+
}} grid={{
|
|
47
|
+
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 md:gap-10",
|
|
48
|
+
}} card={{
|
|
49
|
+
className: "bg-white dark:bg-gray-800 p-8 rounded-xl shadow-lg transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl hover:shadow-purple-500/10 group border border-gray-200 dark:border-gray-700 hover:border-purple-300 dark:hover:border-purple-600",
|
|
50
|
+
}} content={{ className: "flex flex-col space-y-6" }} text={{
|
|
51
|
+
className: "text-gray-700 dark:text-gray-300 text-base md:text-lg leading-relaxed italic font-inter group-hover:text-purple-600 dark:group-hover:text-purple-400 transition-colors duration-300",
|
|
52
|
+
}} author={{
|
|
53
|
+
className: "text-gray-600 dark:text-gray-400 text-sm md:text-base font-medium font-inter",
|
|
54
|
+
}} avatar={{
|
|
55
|
+
className: "w-16 h-16 bg-gradient-to-br from-purple-600 to-purple-700 text-white rounded-full flex items-center justify-center text-xl font-bold shadow-lg group-hover:scale-110 transition-transform duration-300",
|
|
56
|
+
}} avatarText={{ className: "text-white font-bold" }} ariaLabel="Customer testimonials for IntelliOpAI"/>);
|
|
57
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrustBadges.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/TrustBadges.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TrustBadges.d.ts","sourceRoot":"","sources":["../../../../src/templates/productlaunch/components/TrustBadges.tsx"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAgB,WAAW,gCAoE1B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import { TrustBadges as SharedTrustBadges } from "@nextworks/blocks-sections";
|
|
5
|
+
/**
|
|
6
|
+
* Product Launch preset for TrustBadges
|
|
7
|
+
*/
|
|
8
|
+
export function TrustBadges() {
|
|
9
|
+
const badges = [
|
|
10
|
+
{
|
|
11
|
+
badgeText: "50,000+ AI Models",
|
|
12
|
+
badgeDescription: "Powered by",
|
|
13
|
+
badgeIcon: "🤖",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
badgeText: "99.9% Accuracy",
|
|
17
|
+
badgeDescription: "AI Performance",
|
|
18
|
+
badgeIcon: "🎯",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
badgeText: "SOC 2 Type II",
|
|
22
|
+
badgeDescription: "Enterprise Security",
|
|
23
|
+
badgeIcon: "🔒",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
badgeText: "24/7 Support",
|
|
27
|
+
badgeDescription: "Always Available",
|
|
28
|
+
badgeIcon: "⚡",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
badgeText: "Fortune 500",
|
|
32
|
+
badgeDescription: "Trusted by",
|
|
33
|
+
badgeIcon: "🏆",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
return (<SharedTrustBadges id="trust-badges" badges={badges} trustBadgesSectionHeader="Trusted by Industry Leaders" section={{
|
|
37
|
+
className: "py-12 md:py-16 bg-gradient-to-r from-gray-50 to-white dark:from-gray-900 dark:to-gray-800 border-t border-b border-gray-200 dark:border-gray-700",
|
|
38
|
+
}} container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-12" }} header={{ className: "text-center mb-12" }} heading={{
|
|
39
|
+
className: "text-xl md:text-2xl lg:text-3xl font-bold text-gray-800 dark:text-white font-outfit",
|
|
40
|
+
}} badgesContainer={{
|
|
41
|
+
className: "flex flex-col sm:flex-row justify-center items-center gap-8 md:gap-12 lg:gap-16 flex-wrap",
|
|
42
|
+
}} badge={{
|
|
43
|
+
className: "flex flex-col items-center text-center min-w-[180px] group",
|
|
44
|
+
}} badgeContent={{ className: "flex flex-col items-center space-y-3" }} icon={{
|
|
45
|
+
className: "text-3xl md:text-4xl mb-3 group-hover:scale-105 transition-transform duration-500 ease-out",
|
|
46
|
+
}} description={{
|
|
47
|
+
className: "text-xs md:text-sm font-medium text-gray-600 dark:text-gray-400 group-hover:text-purple-500 dark:group-hover:text-purple-400 transition-colors duration-500 ease-out",
|
|
48
|
+
}} text={{
|
|
49
|
+
className: "text-base md:text-lg font-bold text-gray-900 dark:text-white group-hover:text-purple-600 dark:group-hover:text-purple-400 transition-colors duration-500 ease-out font-outfit",
|
|
50
|
+
}} layout="horizontal" ariaLabel="Trust badges for IntelliOpAI"/>);
|
|
51
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/templates/saasdashboard/Page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/templates/saasdashboard/Page.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,iBAAiB,gCAyBhC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
import { Navbar } from "./components/Navbar";
|
|
4
|
+
import { Hero } from "./components/Hero";
|
|
5
|
+
import { Features } from "./components/Features";
|
|
6
|
+
import { Testimonials } from "./components/Testimonials";
|
|
7
|
+
import { TrustBadges } from "./components/TrustBadges";
|
|
8
|
+
import { Contact } from "./components/Contact";
|
|
9
|
+
import { Pricing } from "./components/Pricing";
|
|
10
|
+
import { FAQ } from "./components/FAQ";
|
|
11
|
+
import { Footer } from "./components/Footer";
|
|
12
|
+
import { SmoothScroll } from "./components/SmoothScroll";
|
|
13
|
+
import { PresetThemeVars } from "./PresetThemeVars";
|
|
14
|
+
export function SaaSDashboardPage() {
|
|
15
|
+
return (<PresetThemeVars>
|
|
16
|
+
<div>
|
|
17
|
+
<SmoothScroll />
|
|
18
|
+
<Navbar />
|
|
19
|
+
<section id="home">
|
|
20
|
+
<Hero />
|
|
21
|
+
</section>
|
|
22
|
+
<Features />
|
|
23
|
+
<Testimonials />
|
|
24
|
+
<TrustBadges />
|
|
25
|
+
<section id="pricing">
|
|
26
|
+
<Pricing />
|
|
27
|
+
</section>
|
|
28
|
+
<section id="contact">
|
|
29
|
+
<Contact />
|
|
30
|
+
</section>
|
|
31
|
+
<section id="faq">
|
|
32
|
+
<FAQ />
|
|
33
|
+
</section>
|
|
34
|
+
<Footer />
|
|
35
|
+
</div>
|
|
36
|
+
</PresetThemeVars>);
|
|
37
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetThemeVars.d.ts","sourceRoot":"","sources":["../../../src/templates/saasdashboard/PresetThemeVars.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PresetThemeVars.d.ts","sourceRoot":"","sources":["../../../src/templates/saasdashboard/PresetThemeVars.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,KAAK,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,KAAK,qBAsE7D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { cn } from "@nextworks/blocks-core";
|
|
5
|
+
/**
|
|
6
|
+
* SaaSDashboard template theme variables wrapper.
|
|
7
|
+
* Sky/blue leaning palette; adjust values to your preset branding.
|
|
8
|
+
*/
|
|
9
|
+
export function PresetThemeVars({ className, children }) {
|
|
10
|
+
return (<div className={cn(
|
|
11
|
+
// Shared button ring
|
|
12
|
+
"[--btn-ring:theme(colors.sky.500)] dark:[--btn-ring:theme(colors.sky.400)]",
|
|
13
|
+
// Inputs
|
|
14
|
+
"[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]", "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]", "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]", "[--input-border:theme(colors.sky.200)] dark:[--input-border:theme(colors.sky.700)]", "[--input-focus-ring:theme(colors.sky.500)] dark:[--input-focus-ring:theme(colors.sky.400)]", "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
|
|
15
|
+
// Cards
|
|
16
|
+
"[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]", "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]", "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]", "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]", "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]", "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
|
|
17
|
+
// Badges/Chips
|
|
18
|
+
"[--badge-bg:theme(colors.sky.50)] dark:[--badge-bg:theme(colors.sky.950)]", "[--badge-fg:theme(colors.sky.700)] dark:[--badge-fg:theme(colors.sky.300)]", "[--badge-border:theme(colors.sky.200)] dark:[--badge-border:theme(colors.sky.800)]", "[--badge-active-bg:theme(colors.sky.600)] dark:[--badge-active-bg:theme(colors.sky.500)]", "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]", "[--badge-active-border:theme(colors.sky.700)] dark:[--badge-active-border:theme(colors.sky.400)]",
|
|
19
|
+
// Headings/Subheadings
|
|
20
|
+
"[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]", "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]", "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
|
|
21
|
+
// Hero background (optional)
|
|
22
|
+
"[--hero-bg:theme(colors.white)] dark:[--hero-bg:theme(colors.slate.950)]",
|
|
23
|
+
// Footer
|
|
24
|
+
"[--footer-bg:transparent] dark:[--footer-bg:transparent]", "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]", "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]", "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]", "[--footer-link-hover-fg:theme(colors.sky.700)] dark:[--footer-link-hover-fg:theme(colors.sky.400)]", "[--footer-link-hover-bg:theme(colors.sky.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.18_0.05_235)_20%,transparent)]", "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]", "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
|
|
25
|
+
// Table (optional)
|
|
26
|
+
"[--table-fg:inherit]", "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]", "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]", "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]", "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
|
|
27
|
+
// FAQ specific (optional overrides; fall back to --btn-* and --card-*)
|
|
28
|
+
"[--faq-btn-bg:var(--btn-bg)] dark:[--faq-btn-bg:var(--btn-bg)]", "[--faq-btn-fg:var(--btn-fg)] dark:[--faq-btn-fg:var(--btn-fg)]", "[--faq-btn-hover-bg:var(--btn-hover-bg)] dark:[--faq-btn-hover-bg:var(--btn-hover-bg)]", "[--faq-btn-hover-fg:var(--btn-hover-fg)] dark:[--faq-btn-hover-fg:var(--btn-hover-fg)]", "[--faq-answer-bg:var(--card-bg)] dark:[--faq-answer-bg:var(--card-bg)]", "[--faq-answer-fg:var(--card-fg)] dark:[--faq-answer-fg:var(--card-fg)]", className)}>
|
|
29
|
+
{children}
|
|
30
|
+
</div>);
|
|
31
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Contact.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/Contact.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Contact.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/Contact.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmD1B,wBAAgB,OAAO,sBA2EtB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { Contact as SharedContact, } from "@nextworks/blocks-sections";
|
|
6
|
+
const saasContactFormData = [
|
|
7
|
+
{
|
|
8
|
+
id: "name",
|
|
9
|
+
label: "Full Name",
|
|
10
|
+
placeholder: "Jane Doe",
|
|
11
|
+
required: true,
|
|
12
|
+
type: "text",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "email",
|
|
16
|
+
label: "Work Email",
|
|
17
|
+
placeholder: "jane@company.com",
|
|
18
|
+
required: true,
|
|
19
|
+
type: "email",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "company",
|
|
23
|
+
label: "Company",
|
|
24
|
+
placeholder: "Acme Inc.",
|
|
25
|
+
required: false,
|
|
26
|
+
type: "text",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "teamSize",
|
|
30
|
+
label: "Team Size",
|
|
31
|
+
placeholder: "e.g. 10–50",
|
|
32
|
+
required: false,
|
|
33
|
+
type: "text",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "useCase",
|
|
37
|
+
label: "Primary Use Case",
|
|
38
|
+
placeholder: "e.g. Product analytics, Ops dashboards",
|
|
39
|
+
required: false,
|
|
40
|
+
type: "text",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "message",
|
|
44
|
+
label: "What would you like to see in the demo?",
|
|
45
|
+
placeholder: "Share goals, data sources, timeline…",
|
|
46
|
+
required: true,
|
|
47
|
+
type: "textarea",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
export function Contact() {
|
|
51
|
+
const handleFormSubmit = (e) => {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
const data = Object.fromEntries(new FormData(e.currentTarget).entries());
|
|
54
|
+
console.log("Contact form submitted:", data);
|
|
55
|
+
};
|
|
56
|
+
return (<div className="relative">
|
|
57
|
+
{/* Gradient mesh overlay */}
|
|
58
|
+
<div aria-hidden className="pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(60rem_60rem_at_0%_0%,rgba(59,130,246,0.08),transparent_40%),radial-gradient(50rem_50rem_at_100%_100%,rgba(168,85,247,0.06),transparent_40%)] opacity-20"/>
|
|
59
|
+
{/* Fine noise/dots texture */}
|
|
60
|
+
<div aria-hidden className="pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(rgba(255,255,255,0.07)_1px,transparent_1px)] [background-size:14px_14px] opacity-[0.05]"/>
|
|
61
|
+
|
|
62
|
+
<SharedContact id="contact" ariaLabel="SaaS dashboard contact section" fields={saasContactFormData} contactHeaderText="Ready to See DashFlow in Action?" contactSubHeaderText="Tell us a bit about your team and we'll reach out with a tailored demo."
|
|
63
|
+
// Root and section
|
|
64
|
+
className="w-full" section={{
|
|
65
|
+
className: "py-16 px-6 bg-gradient-to-b from-slate-900/95 via-slate-950 to-slate-900/95 dark:from-slate-950 dark:via-slate-900 dark:to-slate-950",
|
|
66
|
+
}} container={{ className: "mx-auto max-w-4xl" }}
|
|
67
|
+
// Header slots
|
|
68
|
+
headerWrapper={{ className: "mb-10 text-center" }} headerText={{
|
|
69
|
+
className: "text-3xl font-bold font-inter text-white",
|
|
70
|
+
}} subheaderText={{
|
|
71
|
+
className: "mt-3 text-base text-white/90 max-w-2xl mx-auto font-inter",
|
|
72
|
+
}}
|
|
73
|
+
// Form container
|
|
74
|
+
form={{
|
|
75
|
+
className: "bg-card p-8 rounded-xl shadow-xl border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
|
|
76
|
+
}}
|
|
77
|
+
// Fields and inputs
|
|
78
|
+
fieldsWrapper={{ className: "space-y-4" }} field={{ className: "space-y-2" }} label={{
|
|
79
|
+
className: "text-card-foreground text-sm font-medium font-poppins block",
|
|
80
|
+
}} input={{
|
|
81
|
+
className: "w-full p-3 rounded-md font-inter border-[var(--input-border)] bg-[var(--input-bg)] text-[var(--input-fg)] placeholder:text-[var(--input-placeholder)] focus-visible:ring-2 focus-visible:ring-[var(--input-focus-ring)] focus-visible:ring-offset-[var(--input-ring-offset)]",
|
|
82
|
+
}} textarea={{
|
|
83
|
+
className: "w-full p-3 rounded-md resize-vertical min-h-[120px] font-inter border-[var(--input-border)] bg-[var(--input-bg)] text-[var(--input-fg)] placeholder:text-[var(--input-placeholder)] focus-visible:ring-2 focus-visible:ring-[var(--input-focus-ring)] focus-visible:ring-offset-[var(--input-ring-offset)]",
|
|
84
|
+
}}
|
|
85
|
+
// Submit button (wrapper/style/text split)
|
|
86
|
+
submitButtonWrapper={{ className: "pt-2" }} submitButtonStyle={{
|
|
87
|
+
variant: "default",
|
|
88
|
+
size: "lg",
|
|
89
|
+
className: "w-full bg-blue-600 hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-400 text-white font-semibold font-inter shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
|
|
90
|
+
}} submitButtonText="Send Request" onSubmit={handleFormSubmit}/>
|
|
91
|
+
</div>);
|
|
92
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/Dashboard.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,UAAU,cAAc;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,aAAa,EACb,SAAuB,EACvB,QAA4C,GAC7C,EAAE,cAAc,qBA2DhB;AAoLD,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,qBAwB3D"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
|
|
2
|
+
// Do not edit this file directly. Edit the kit source instead.
|
|
3
|
+
"use client";
|
|
4
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
5
|
+
export function Dashboard({ stats, projects, floatingCards, activeTab = "Analytics", navItems = ["Analytics", "Projects", "Team"], }) {
|
|
6
|
+
return (<div className="relative isolate">
|
|
7
|
+
<DashboardMockup stats={stats} projects={projects} activeTab={activeTab} navItems={navItems}/>
|
|
8
|
+
|
|
9
|
+
{floatingCards.map(({ position, icon, text }) => (<FloatingCard key={position} position={position} icon={icon} text={text}/>))}
|
|
10
|
+
|
|
11
|
+
<style>{`
|
|
12
|
+
.dashboard-mockup {
|
|
13
|
+
transform: perspective(1000px) rotateY(-5deg) rotateX(5deg);
|
|
14
|
+
transition: transform 0.3s ease;
|
|
15
|
+
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3);
|
|
16
|
+
}
|
|
17
|
+
.dashboard-mockup:hover {
|
|
18
|
+
transform: perspective(1000px) rotateY(-2deg) rotateX(2deg);
|
|
19
|
+
}
|
|
20
|
+
.trend-line {
|
|
21
|
+
clip-path: polygon(
|
|
22
|
+
0 100%,
|
|
23
|
+
20% 80%,
|
|
24
|
+
40% 85%,
|
|
25
|
+
60% 60%,
|
|
26
|
+
80% 50%,
|
|
27
|
+
100% 20%
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
@keyframes growUp {
|
|
31
|
+
0% {
|
|
32
|
+
height: 0;
|
|
33
|
+
opacity: 0;
|
|
34
|
+
}
|
|
35
|
+
100% {
|
|
36
|
+
opacity: 1;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
@keyframes floatAnim {
|
|
40
|
+
0%,
|
|
41
|
+
100% {
|
|
42
|
+
transform: translateY(0px);
|
|
43
|
+
}
|
|
44
|
+
50% {
|
|
45
|
+
transform: translateY(-20px);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
`}</style>
|
|
49
|
+
</div>);
|
|
50
|
+
}
|
|
51
|
+
function DashboardMockup({ stats, projects, activeTab, navItems, }) {
|
|
52
|
+
const [tilt, setTilt] = useState({ rx: 0, ry: 0 });
|
|
53
|
+
const targetTilt = useRef({ rx: 0, ry: 0 });
|
|
54
|
+
const rafId = useRef(null);
|
|
55
|
+
const animate = () => {
|
|
56
|
+
setTilt((prev) => {
|
|
57
|
+
const smoothing = 0.15;
|
|
58
|
+
const nextRx = prev.rx + (targetTilt.current.rx - prev.rx) * smoothing;
|
|
59
|
+
const nextRy = prev.ry + (targetTilt.current.ry - prev.ry) * smoothing;
|
|
60
|
+
return { rx: nextRx, ry: nextRy };
|
|
61
|
+
});
|
|
62
|
+
rafId.current = requestAnimationFrame(animate);
|
|
63
|
+
};
|
|
64
|
+
const handleMove = (e) => {
|
|
65
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
66
|
+
const x = e.clientX - rect.left;
|
|
67
|
+
const y = e.clientY - rect.top;
|
|
68
|
+
const rx = (y / rect.height - 0.5) * -6;
|
|
69
|
+
const ry = (x / rect.width - 0.5) * 6;
|
|
70
|
+
targetTilt.current = { rx, ry };
|
|
71
|
+
if (rafId.current == null)
|
|
72
|
+
rafId.current = requestAnimationFrame(animate);
|
|
73
|
+
};
|
|
74
|
+
const handleLeave = () => {
|
|
75
|
+
targetTilt.current = { rx: 0, ry: 0 };
|
|
76
|
+
};
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
return () => {
|
|
79
|
+
if (rafId.current != null)
|
|
80
|
+
cancelAnimationFrame(rafId.current);
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
83
|
+
return (<div className={"dashboard-mockup transform-gpu rounded-2xl border border-blue-500/20 p-6 shadow-2xl ring-1 ring-blue-500/10 backdrop-blur transition-transform duration-150 ease-out motion-reduce:transition-none " +
|
|
84
|
+
"bg-slate-900/80 dark:bg-slate-900/80"} style={{
|
|
85
|
+
willChange: "transform",
|
|
86
|
+
transform: `perspective(1000px) rotateX(${tilt.rx}deg) rotateY(${tilt.ry}deg)`,
|
|
87
|
+
}} onMouseMove={handleMove} onMouseLeave={handleLeave}>
|
|
88
|
+
<DashboardHeader activeTab={activeTab} navItems={navItems}/>
|
|
89
|
+
<DashboardGrid stats={stats} projects={projects}/>
|
|
90
|
+
</div>);
|
|
91
|
+
}
|
|
92
|
+
function DashboardHeader({ activeTab = "Analytics", navItems = ["Analytics", "Projects", "Team"], }) {
|
|
93
|
+
return (<div className="mb-6 flex items-center justify-between border-b border-blue-500/10 pb-4">
|
|
94
|
+
<div className="text-[1.1rem] font-semibold text-slate-200">
|
|
95
|
+
Business Overview
|
|
96
|
+
</div>
|
|
97
|
+
<div className="hidden gap-3 md:flex">
|
|
98
|
+
{navItems.map((item) => (<div key={item} className={"rounded-md px-3 py-2 text-sm " +
|
|
99
|
+
(item === activeTab
|
|
100
|
+
? "bg-gradient-to-br from-blue-500 to-purple-500 text-white"
|
|
101
|
+
: "bg-blue-500/10 text-blue-400")}>
|
|
102
|
+
{item}
|
|
103
|
+
</div>))}
|
|
104
|
+
</div>
|
|
105
|
+
</div>);
|
|
106
|
+
}
|
|
107
|
+
function DashboardGrid({ stats, projects, }) {
|
|
108
|
+
return (<div className="mb-4 grid grid-cols-[2fr_1fr] gap-4">
|
|
109
|
+
<ChartArea />
|
|
110
|
+
<StatsPanel stats={stats}/>
|
|
111
|
+
<ProjectList projects={projects}/>
|
|
112
|
+
</div>);
|
|
113
|
+
}
|
|
114
|
+
function ChartArea() {
|
|
115
|
+
const barHeights = [30, 45, 35, 60, 55, 75, 70, 85, 90, 100];
|
|
116
|
+
return (<div className="relative overflow-hidden rounded-lg border border-blue-500/10 bg-slate-900/50 p-4">
|
|
117
|
+
<div className="mb-2 text-sm text-slate-300">Revenue Growth</div>
|
|
118
|
+
<div className="relative h-32 overflow-hidden rounded-md" style={{
|
|
119
|
+
background: "linear-gradient(45deg, transparent 20%, rgba(59,130,246,0.1) 20%, rgba(59,130,246,0.1) 40%, transparent 40%, transparent 60%, rgba(139,92,246,0.1) 60%, rgba(139,92,246,0.1) 80%, transparent 80%)",
|
|
120
|
+
}}>
|
|
121
|
+
<div className="absolute inset-[10px] flex items-end gap-[3px]">
|
|
122
|
+
{barHeights.map((h, i) => (<div key={i} className="flex-1 rounded-t bg-gradient-to-b from-blue-500 to-purple-500" style={{
|
|
123
|
+
minHeight: "20px",
|
|
124
|
+
height: `${h}%`,
|
|
125
|
+
animation: "growUp 2s ease-out both",
|
|
126
|
+
animationDelay: `${(i + 1) * 0.1}s`,
|
|
127
|
+
}}/>))}
|
|
128
|
+
</div>
|
|
129
|
+
<div className="trend-line absolute top-5 right-[5%] left-[5%] h-[2px] rounded bg-gradient-to-r from-emerald-500 to-blue-500 opacity-80"/>
|
|
130
|
+
</div>
|
|
131
|
+
</div>);
|
|
132
|
+
}
|
|
133
|
+
function StatsPanel({ stats }) {
|
|
134
|
+
return (<div className="flex flex-col gap-2">
|
|
135
|
+
{stats.map((s, i) => (<div key={i} className="rounded-lg border border-blue-500/10 bg-slate-900/50 p-3">
|
|
136
|
+
<div className="text-lg font-bold text-blue-500">{s.value}</div>
|
|
137
|
+
<div className="text-[0.7rem] text-slate-400 uppercase">
|
|
138
|
+
{s.label}
|
|
139
|
+
</div>
|
|
140
|
+
</div>))}
|
|
141
|
+
</div>);
|
|
142
|
+
}
|
|
143
|
+
function ProjectList({ projects }) {
|
|
144
|
+
return (<div className="col-span-2 rounded-lg border border-blue-500/10 bg-slate-900/50 p-4">
|
|
145
|
+
<div className="mb-2 text-sm text-slate-300">Active Projects</div>
|
|
146
|
+
<div className="flex flex-wrap gap-2">
|
|
147
|
+
{projects.map((p, i) => (<div key={i} className="rounded border border-blue-500/30 bg-gradient-to-br from-blue-500/20 to-purple-500/10 px-2 py-2 text-[0.8rem] text-slate-200">
|
|
148
|
+
{p}
|
|
149
|
+
</div>))}
|
|
150
|
+
</div>
|
|
151
|
+
</div>);
|
|
152
|
+
}
|
|
153
|
+
function FloatingCard({ position, icon, text }) {
|
|
154
|
+
const positionClasses = position === "card-1"
|
|
155
|
+
? "top-[10%] right-[6%]"
|
|
156
|
+
: position === "card-2"
|
|
157
|
+
? "bottom-[20%] left-[2%]"
|
|
158
|
+
: "top-0 left-0";
|
|
159
|
+
return (<div className={[
|
|
160
|
+
"absolute z-10 transform-gpu rounded-lg border border-blue-500/20 p-4 shadow-lg",
|
|
161
|
+
"animate-[floatAnim_6s_ease-in-out_infinite]",
|
|
162
|
+
"bg-slate-800 dark:bg-slate-900",
|
|
163
|
+
positionClasses,
|
|
164
|
+
].join(" ")} style={{ willChange: "transform" }}>
|
|
165
|
+
<div className="mb-2 flex h-[30px] w-[30px] items-center justify-center rounded-md bg-gradient-to-br from-blue-500 to-purple-500 text-sm text-white">
|
|
166
|
+
{icon}
|
|
167
|
+
</div>
|
|
168
|
+
<div className="text-sm text-slate-300">{text}</div>
|
|
169
|
+
</div>);
|
|
170
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FAQ.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/FAQ.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FAQ.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/FAQ.tsx"],"names":[],"mappings":"AAgCA,wBAAgB,GAAG,gCAyBlB"}
|