@nextworks/blocks-templates 0.2.0-alpha.7 → 0.2.0-alpha.8
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/dist/templates/digitalagency/components/About.jsx +43 -0
- package/dist/templates/digitalagency/components/CTA.jsx +31 -0
- package/dist/templates/digitalagency/components/Contact.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Contact.jsx +89 -0
- package/dist/templates/digitalagency/components/Footer.d.ts +8 -0
- package/dist/templates/digitalagency/components/Footer.jsx +58 -0
- package/dist/templates/digitalagency/components/Hero.d.ts +7 -0
- package/dist/templates/digitalagency/components/Hero.jsx +71 -0
- package/dist/templates/digitalagency/components/Navbar.d.ts +20 -0
- package/dist/templates/digitalagency/components/Navbar.d.ts.map +1 -1
- package/dist/templates/digitalagency/components/Navbar.jsx +1 -1
- 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 +125 -0
- package/dist/templates/digitalagency/components/Portfolio.jsx +104 -0
- package/dist/templates/gallery/PresetThemeVars.d.ts +15 -0
- package/dist/templates/gallery/PresetThemeVars.jsx +2 -2
- package/dist/templates/gallery/page.d.ts.map +1 -1
- package/dist/templates/gallery/page.jsx +1 -2
- package/dist/templates/productlaunch/components/About.d.ts.map +1 -1
- package/dist/templates/productlaunch/components/About.jsx +55 -0
- 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 +91 -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 +55 -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 +50 -0
- package/dist/templates/productlaunch/components/Footer.d.ts +5 -0
- package/dist/templates/productlaunch/components/Footer.jsx +102 -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 +68 -0
- package/dist/templates/productlaunch/components/Navbar.d.ts +25 -0
- package/dist/templates/productlaunch/components/Navbar.jsx +81 -0
- package/dist/templates/productlaunch/components/Pricing.d.ts +5 -0
- package/dist/templates/productlaunch/components/Pricing.jsx +76 -0
- package/dist/templates/productlaunch/components/ProcessTimeline.d.ts +5 -0
- package/dist/templates/productlaunch/components/ProcessTimeline.jsx +62 -0
- package/dist/templates/productlaunch/components/ServicesGrid.d.ts +5 -0
- package/dist/templates/productlaunch/components/ServicesGrid.jsx +40 -0
- package/dist/templates/productlaunch/components/Team.d.ts +5 -0
- package/dist/templates/productlaunch/components/Team.jsx +71 -0
- package/dist/templates/productlaunch/components/Testimonials.d.ts +5 -0
- package/dist/templates/productlaunch/components/Testimonials.jsx +54 -0
- package/dist/templates/productlaunch/components/TrustBadges.d.ts +5 -0
- package/dist/templates/productlaunch/components/TrustBadges.jsx +49 -0
- package/dist/templates/saasdashboard/components/Contact.jsx +89 -0
- package/dist/templates/saasdashboard/components/Dashboard.d.ts.map +1 -0
- package/dist/templates/saasdashboard/components/Dashboard.jsx +168 -0
- package/dist/templates/saasdashboard/components/Hero.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Hero.jsx +0 -1
- package/dist/templates/saasdashboard/components/Hero_mask.d.ts.map +1 -1
- package/dist/templates/saasdashboard/components/Hero_mask.jsx +0 -1
- 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 +83 -0
- package/dist/templates/saasdashboard/components/SmoothScroll.d.ts.map +1 -0
- package/dist/templates/saasdashboard/components/SmoothScroll.jsx +86 -0
- package/package.json +34 -34
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { About as SharedAbout } from "@nextworks/blocks-sections";
|
|
4
|
+
export function About() {
|
|
5
|
+
return (<SharedAbout
|
|
6
|
+
// Content
|
|
7
|
+
aboutSubheadingText="About Us" aboutHeadingText="Your Success Is Our Mission" aboutContentText="With 50+ successful projects and 5 years of experience, we specialize in creating digital solutions that drive real business growth. Our team combines creative design with data-driven strategy." aboutTextAlign="center"
|
|
8
|
+
// Stats
|
|
9
|
+
showStats={true} animateStats={true} aboutStats={[
|
|
10
|
+
{ value: "2.5", suffix: "k+", label: "Leads Generated" },
|
|
11
|
+
{ value: "4.8", suffix: "%", label: "Avg. CTR" },
|
|
12
|
+
{ value: "92", suffix: "%", label: "Client Retention" },
|
|
13
|
+
{ value: "12", suffix: "M", label: "Ad Spend Managed" },
|
|
14
|
+
]}
|
|
15
|
+
// Slots / styling
|
|
16
|
+
section={{
|
|
17
|
+
className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
|
|
18
|
+
}} container={{
|
|
19
|
+
className: "max-w-7xl mx-auto px-6",
|
|
20
|
+
}} inner={{
|
|
21
|
+
className: "flex flex-col gap-12",
|
|
22
|
+
}} contentContainer={{
|
|
23
|
+
className: "max-w-4xl mx-auto",
|
|
24
|
+
}} contentStack={{
|
|
25
|
+
className: "flex flex-col gap-6",
|
|
26
|
+
}} subheading={{
|
|
27
|
+
className: "text-sm font-semibold font-poppins uppercase tracking-wider text-[var(--about-accent)]",
|
|
28
|
+
}} heading={{
|
|
29
|
+
className: "text-4xl md:text-5xl lg:text-6xl font-bold leading-tight text-[var(--heading-fg)]",
|
|
30
|
+
}} content={{
|
|
31
|
+
className: "text-xl md:text-2xl max-w-3xl mx-auto leading-relaxed text-[var(--subheading-fg)]",
|
|
32
|
+
}} statsSection={{
|
|
33
|
+
className: "bg-card p-8 rounded-xl shadow-lg mx-auto max-w-5xl w-full border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
|
|
34
|
+
}} statsGrid={{
|
|
35
|
+
className: "grid grid-cols-2 md:grid-cols-4 gap-8 justify-items-center",
|
|
36
|
+
}} statItem={{
|
|
37
|
+
className: "flex flex-col items-center gap-2",
|
|
38
|
+
}} statNumber={{
|
|
39
|
+
className: "text-4xl md:text-5xl font-bold font-poppins leading-none text-[var(--about-accent)]",
|
|
40
|
+
}} statLabel={{
|
|
41
|
+
className: "text-sm font-medium font-inter text-center text-[var(--card-muted-fg)]",
|
|
42
|
+
}}/>);
|
|
43
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { CTA as SharedCTA } from "@nextworks/blocks-sections";
|
|
4
|
+
export function CTA() {
|
|
5
|
+
return (<SharedCTA
|
|
6
|
+
// Background colors moved to the section slot
|
|
7
|
+
section={{
|
|
8
|
+
className: "bg-sky-50 dark:bg-gray-900 text-foreground [--heading-fg:rgb(17,24,39)] dark:[--heading-fg:white] [--subheading-fg:rgba(17,24,39,0.8)] dark:[--subheading-fg:rgba(255,255,255,0.85)] [--description-fg:rgba(17,24,39,0.75)] dark:[--description-fg:rgba(255,255,255,0.75)]",
|
|
9
|
+
}}
|
|
10
|
+
// Layout/height/centering handled by the container slot
|
|
11
|
+
container={{
|
|
12
|
+
className: "mx-auto flex h-[32vh] w-full max-w-6xl flex-col items-center justify-center overflow-hidden px-4 pb-8",
|
|
13
|
+
}}
|
|
14
|
+
// Heading mapped to the new headingText slot
|
|
15
|
+
headingText={{
|
|
16
|
+
text: "Ready To Transform Your Business?",
|
|
17
|
+
className: "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
|
|
18
|
+
}}
|
|
19
|
+
// Use actionsWrapper for spacing instead of margin on the button
|
|
20
|
+
actionsWrapper={{
|
|
21
|
+
className: "mt-6 flex flex-col items-center gap-3 sm:flex-row [--btn-ring:rgba(192,38,211,0.35)] dark:[--btn-ring:rgba(192,38,211,0.45)]",
|
|
22
|
+
}}
|
|
23
|
+
// Primary CTA mapped to ctaButton + ctaButtonStyle
|
|
24
|
+
ctaButton={{ label: "Get Your Free Quote", href: "#contact" }} ctaButtonStyle={{
|
|
25
|
+
variant: "default",
|
|
26
|
+
size: "lg",
|
|
27
|
+
className: "font-poppins shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:#c026d3] dark:[--btn-bg:#c026d3] [--btn-hover-bg:#a21caf] dark:[--btn-hover-bg:#a21caf] [--btn-fg:#ffffff] dark:[--btn-fg:#ffffff] hover:[--btn-hover-fg:#ffffff] dark:hover:[--btn-hover-fg:#ffffff] [--btn-border:transparent]",
|
|
28
|
+
}}
|
|
29
|
+
// Preserve the previous top margin on the heading
|
|
30
|
+
spacing={{ topMargin: "mt-[8vh]" }}/>);
|
|
31
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Contact.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/Contact.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Contact.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/Contact.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AA2D1B,wBAAgB,OAAO,sBA4DtB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Contact as SharedContact, } from "@nextworks/blocks-sections";
|
|
4
|
+
const agencyContactFormData = [
|
|
5
|
+
{
|
|
6
|
+
id: "name",
|
|
7
|
+
label: "Your Full Name",
|
|
8
|
+
placeholder: "John Smith",
|
|
9
|
+
required: true,
|
|
10
|
+
type: "text",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: "email",
|
|
14
|
+
label: "Email Address",
|
|
15
|
+
placeholder: "john@yourcompany.com",
|
|
16
|
+
required: true,
|
|
17
|
+
type: "email",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "phone",
|
|
21
|
+
label: "Phone Number",
|
|
22
|
+
placeholder: "+1 (555) 123-4567",
|
|
23
|
+
required: false,
|
|
24
|
+
type: "tel",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "company",
|
|
28
|
+
label: "Company Name",
|
|
29
|
+
placeholder: "Your Company LLC",
|
|
30
|
+
required: false,
|
|
31
|
+
type: "text",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "projectType",
|
|
35
|
+
label: "Service Interested In",
|
|
36
|
+
placeholder: "e.g. Web Design, SEO, E-commerce, Branding",
|
|
37
|
+
required: false,
|
|
38
|
+
type: "text",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "budget",
|
|
42
|
+
label: "Project Budget (Optional)",
|
|
43
|
+
placeholder: "e.g. $3,000 - $6,000",
|
|
44
|
+
required: false,
|
|
45
|
+
type: "text",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "message",
|
|
49
|
+
label: "Project Details",
|
|
50
|
+
placeholder: "Tell us about your project goals, timeline, and any specific requirements...",
|
|
51
|
+
required: true,
|
|
52
|
+
type: "textarea",
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
export function Contact() {
|
|
56
|
+
const handleFormSubmit = (e) => {
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
const data = Object.fromEntries(new FormData(e.currentTarget).entries());
|
|
59
|
+
};
|
|
60
|
+
return (<SharedContact id="contact" fields={agencyContactFormData} contactHeaderText="Let’s Talk Strategy" contactSubHeaderText="We’re here to help you grow — tell us how!"
|
|
61
|
+
// Root and layout
|
|
62
|
+
className="w-full" section={{ className: "py-16 px-4 bg-fuchsia-600 dark:bg-fuchsia-600" }} container={{ className: "mx-auto max-w-4xl" }}
|
|
63
|
+
// Header slots (new)
|
|
64
|
+
headerWrapper={{ className: "mb-8 text-center" }} headerText={{
|
|
65
|
+
className: "text-4xl md:text-5xl font-bold font-poppins text-white tracking-tight",
|
|
66
|
+
}} subheaderText={{
|
|
67
|
+
className: "mt-3 text-lg md:text-xl font-inter text-white/90 px-4 md:px-14",
|
|
68
|
+
}}
|
|
69
|
+
// Form container
|
|
70
|
+
form={{
|
|
71
|
+
className: "bg-card p-8 rounded-lg shadow-md border border-border bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)]",
|
|
72
|
+
}}
|
|
73
|
+
// Fields wrapper and field item
|
|
74
|
+
fieldsWrapper={{ className: "space-y-4" }} field={{ className: "space-y-2" }}
|
|
75
|
+
// Label + inputs
|
|
76
|
+
label={{
|
|
77
|
+
className: "text-card-foreground text-sm font-medium font-poppins block",
|
|
78
|
+
}} input={{
|
|
79
|
+
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)]",
|
|
80
|
+
}} textarea={{
|
|
81
|
+
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)]",
|
|
82
|
+
}}
|
|
83
|
+
// Submit button (split between wrapper/style/text)
|
|
84
|
+
submitButtonWrapper={{ className: "pt-2" }} submitButtonStyle={{
|
|
85
|
+
variant: "default",
|
|
86
|
+
size: "lg",
|
|
87
|
+
className: "w-full bg-fuchsia-700 hover:bg-fuchsia-800 text-white font-poppins font-medium shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
|
|
88
|
+
}} submitButtonText="Schedule Free Consultation" onSubmit={handleFormSubmit} ariaLabel="Agency contact section"/>);
|
|
89
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Preset Footer for the Digital Agency template
|
|
4
|
+
* - Uses the shared Footer slot API
|
|
5
|
+
* - Keeps brand distinct, flush-left; aligns top with nav headers
|
|
6
|
+
*/
|
|
7
|
+
export declare function Footer(): React.JSX.Element;
|
|
8
|
+
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Footer as SharedFooter } from "@nextworks/blocks-sections";
|
|
4
|
+
const agencyNavLinks = [
|
|
5
|
+
{
|
|
6
|
+
heading: "Services",
|
|
7
|
+
links: [
|
|
8
|
+
{ name: "Web Design & Development", href: "#services" },
|
|
9
|
+
{ name: "SEO & Digital Marketing", href: "#services" },
|
|
10
|
+
{ name: "E-commerce Solutions", href: "#services" },
|
|
11
|
+
{ name: "Brand Identity & Design", href: "#services" },
|
|
12
|
+
],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
heading: "Company",
|
|
16
|
+
links: [
|
|
17
|
+
{ name: "About Us", href: "#about" },
|
|
18
|
+
{ name: "Our Work", href: "#portfolio" },
|
|
19
|
+
{ name: "Process", href: "#process" },
|
|
20
|
+
{ name: "Contact", href: "#contact" },
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
heading: "Resources",
|
|
25
|
+
links: [
|
|
26
|
+
{ name: "Free Consultation", href: "#contact" },
|
|
27
|
+
{ name: "Case Studies", href: "#portfolio" },
|
|
28
|
+
{ name: "Get Quote", href: "#pricing" },
|
|
29
|
+
{ name: "Privacy Policy", href: "#privacy" },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Preset Footer for the Digital Agency template
|
|
35
|
+
* - Uses the shared Footer slot API
|
|
36
|
+
* - Keeps brand distinct, flush-left; aligns top with nav headers
|
|
37
|
+
*/
|
|
38
|
+
export function Footer() {
|
|
39
|
+
return (<SharedFooter footerBrandName="Nexus Digital" footerNavLinks={agencyNavLinks} ariaLabel="Footer section" section={{
|
|
40
|
+
className: "w-full bg-gray-100 dark:bg-gray-900 text-gray-800 dark:text-white",
|
|
41
|
+
}} container={{ className: "max-w-7xl mx-auto px-6" }} brand={{
|
|
42
|
+
className: "text-2xl font-bold font-poppins text-fuchsia-600 dark:text-fuchsia-400",
|
|
43
|
+
}} brandWrapper={{
|
|
44
|
+
className: "flex flex-col items-start text-left lg:pr-8",
|
|
45
|
+
}} navSection={{
|
|
46
|
+
className: "flex flex-col lg:flex-row items-start justify-center gap-8 lg:gap-12 pt-6.5 pb-8",
|
|
47
|
+
}} navGroup={{ className: "flex flex-col items-start text-left pt-1.5" }} navHeading={{
|
|
48
|
+
className: "font-bold font-poppins text-gray-800 dark:text-white mb-3 text-sm uppercase tracking-wider",
|
|
49
|
+
}} navLink={{
|
|
50
|
+
className: "text-gray-600 dark:text-gray-400 hover:text-fuchsia-600 dark:hover:text-fuchsia-400 transition-colors duration-200 text-sm mb-2 block font-inter",
|
|
51
|
+
}} socialSection={{
|
|
52
|
+
className: "flex items-center justify-center gap-4 py-4",
|
|
53
|
+
}} socialLink={{
|
|
54
|
+
className: "text-gray-600 dark:text-gray-400 hover:text-fuchsia-600 dark:hover:text-fuchsia-400 transition-colors duration-200 p-2 rounded-md hover:bg-gray-200 dark:hover:bg-gray-800",
|
|
55
|
+
}} socialIcon={{ className: "h-5 w-5" }} copyright={{
|
|
56
|
+
className: "text-center text-xs text-gray-600 dark:text-gray-400 py-4 border-t border-gray-200 dark:border-gray-800 font-inter",
|
|
57
|
+
}}/>);
|
|
58
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { HeroSplit } from "@nextworks/blocks-sections";
|
|
4
|
+
import { NetworkPattern } from "../components/NetworkPattern";
|
|
5
|
+
/**
|
|
6
|
+
* Hero preset for the digital agency template,
|
|
7
|
+
* wired to the shared HeroSplit with slots + cn API.
|
|
8
|
+
*/
|
|
9
|
+
export function Hero() {
|
|
10
|
+
return (<section id="home" className="bg-white dark:bg-black">
|
|
11
|
+
<HeroSplit section={{
|
|
12
|
+
className: "relative bg-gradient-to-br from-violet-600 to-fuchsia-600 px-6 pt-8 pb-16 md:pt-12 md:pb-20 text-white hero-pattern",
|
|
13
|
+
}} heading={{
|
|
14
|
+
text: "Digital Innovation That Drives Growth",
|
|
15
|
+
className: "text-5xl md:text-5xl lg:text-7xl font-extrabold leading-tight text-white font-poppins",
|
|
16
|
+
}} subheading={{
|
|
17
|
+
text: "We craft exceptional digital experiences that transform businesses. From cutting-edge web applications to AI-powered solutions, we turn your vision into reality.",
|
|
18
|
+
className: "mt-6 text-xl md:text-1xl text-white/90 max-w-3xl font-inter font-medium leading-relaxed",
|
|
19
|
+
}} cta1={{
|
|
20
|
+
label: "Start Your Project",
|
|
21
|
+
href: "#contact",
|
|
22
|
+
variant: "default",
|
|
23
|
+
size: "lg",
|
|
24
|
+
className: [
|
|
25
|
+
"font-poppins font-semibold px-8 py-3 shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 text-lg",
|
|
26
|
+
"[--btn-bg:theme(colors.fuchsia.600)]",
|
|
27
|
+
"hover:[--btn-hover-bg:theme(colors.fuchsia.700)]",
|
|
28
|
+
"[--btn-fg:theme(colors.white)]",
|
|
29
|
+
"hover:[--btn-hover-fg:theme(colors.white)]",
|
|
30
|
+
].join(" "),
|
|
31
|
+
}} cta2={{
|
|
32
|
+
label: "Explore Solutions",
|
|
33
|
+
href: "#services",
|
|
34
|
+
variant: "outline",
|
|
35
|
+
size: "lg",
|
|
36
|
+
className: [
|
|
37
|
+
"font-poppins font-semibold px-8 py-3 text-lg shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
|
|
38
|
+
"border-2", // match previous thickness
|
|
39
|
+
// set colors via vars
|
|
40
|
+
"[--btn-fg:oklch(0.51_0.18_341)]", // fuchsia-700-ish
|
|
41
|
+
"[--btn-border:oklch(0.97_0.01_0)]", // white/90 approx
|
|
42
|
+
"[--btn-bg:oklch(0.97_0.01_0_/0.9)]",
|
|
43
|
+
"hover:[--btn-hover-bg:oklch(1_0_0)]", // white
|
|
44
|
+
"hover:[--btn-hover-fg:oklch(0.51_0.18_341)]",
|
|
45
|
+
// dark: make it a light outline with white text
|
|
46
|
+
"dark:[--btn-fg:oklch(1_0_0)]",
|
|
47
|
+
"dark:[--btn-border:oklch(1_0_0_/0.9)]",
|
|
48
|
+
"dark:[--btn-bg:transparent]",
|
|
49
|
+
"dark:hover:[--btn-hover-bg:oklch(1_0_0))]",
|
|
50
|
+
].join(" "),
|
|
51
|
+
}} image={{
|
|
52
|
+
src: undefined,
|
|
53
|
+
alt: "Digital innovation network visualization",
|
|
54
|
+
className: "object-contain",
|
|
55
|
+
}} imageLayout="full-bleed" fallback={<NetworkPattern />} imageContainer={{ className: "mt-10 sm:mt-10 md:mt-0 md:mr-0 lg:mr-7" }}
|
|
56
|
+
// imageContainer={{
|
|
57
|
+
// className:
|
|
58
|
+
// "relative w-full min-h-[16rem] h-[20rem] md:h-[28rem] lg:h-[32rem] self-start mt-20 lg:mt-0 mb-10 lg:mb-0",
|
|
59
|
+
// }}
|
|
60
|
+
textContainer={{
|
|
61
|
+
className: "flex-1 px-5 lg:px-8 lg:self-start pt-0 md:pt-2 lg:pt-4",
|
|
62
|
+
}} buttonsContainer={{
|
|
63
|
+
className: [
|
|
64
|
+
"gap-4 mt-8 sm:flex-col lg:flex-row",
|
|
65
|
+
"[--btn-ring:oklch(1_0_0)]", // white ring to match on purple bg
|
|
66
|
+
].join(" "),
|
|
67
|
+
}}
|
|
68
|
+
// buttonsContainer={{ className: "flex gap-4 mt-8" }}
|
|
69
|
+
textAlign="center" ariaLabel="Digital innovation that drives growth hero section"/>
|
|
70
|
+
</section>);
|
|
71
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ComponentProps } from "react";
|
|
2
|
+
import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
|
|
3
|
+
/**
|
|
4
|
+
* Digital Agency preset Navbar (Nexus Digital)
|
|
5
|
+
*
|
|
6
|
+
* - No CTA button (ctaButton = null)
|
|
7
|
+
* - Fuchsia hover/focus accents for links and toggles
|
|
8
|
+
* - Exposes the Shared Navbar API via shallow-merge overrides
|
|
9
|
+
*
|
|
10
|
+
* Example overrides:
|
|
11
|
+
* <Navbar
|
|
12
|
+
* links={{ className: "hover:text-emerald-600" }}
|
|
13
|
+
* container={{ className: "max-w-6xl mx-auto" }}
|
|
14
|
+
* />
|
|
15
|
+
*/
|
|
16
|
+
type SharedNavbarProps = ComponentProps<typeof SharedNavbar>;
|
|
17
|
+
type PresetOverrides = Partial<SharedNavbarProps>;
|
|
18
|
+
export declare function Navbar(overrides?: PresetOverrides): import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=Navbar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/Navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGpE
|
|
1
|
+
{"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/Navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGpE;;;;;;;;;;;;GAYG;AACH,KAAK,iBAAiB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAC7D,KAAK,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AA2FlD,wBAAgB,MAAM,CAAC,SAAS,GAAE,eAAoB,+BAOrD"}
|
|
@@ -18,7 +18,7 @@ const defaultProps = {
|
|
|
18
18
|
ariaLabel: "Nexus Digital main navigation",
|
|
19
19
|
// Allow page-level layout overrides if needed
|
|
20
20
|
className: "",
|
|
21
|
-
// Style slots
|
|
21
|
+
// Style slots
|
|
22
22
|
nav: {
|
|
23
23
|
className: "bg-white/80 dark:bg-gray-900/80 backdrop-blur border-b border-gray-200 dark:border-gray-800 " +
|
|
24
24
|
"text-gray-800 dark:text-white " +
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkPattern.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/NetworkPattern.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EA8RlC,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* NetworkPattern
|
|
5
|
+
* Tailwind-based animated network background for hero fallbacks.
|
|
6
|
+
*/
|
|
7
|
+
export const NetworkPattern = () => {
|
|
8
|
+
return (<div className="relative h-full w-full overflow-hidden">
|
|
9
|
+
{/* Ambient gradient blobs behind the network */}
|
|
10
|
+
<div className="pointer-events-none absolute inset-0 -z-10 overflow-hidden">
|
|
11
|
+
<div className="absolute -top-16 -left-16 h-72 w-72 rounded-full bg-blue-500/25 blur-3xl"/>
|
|
12
|
+
<div className="absolute right-0 bottom-0 h-80 w-80 rounded-full bg-cyan-400/25 blur-3xl"/>
|
|
13
|
+
<div className="absolute top-14 right-1/3 h-56 w-56 rounded-full bg-indigo-500/15 blur-3xl"/>
|
|
14
|
+
<div className="absolute -bottom-10 left-1/4 h-64 w-64 rounded-full bg-sky-500/10 blur-3xl"/>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
{/* Main SVG network pattern */}
|
|
18
|
+
<svg width="100%" height="100%" viewBox="0 0 900 520" className="absolute top-0 left-0 [transform:scale(1.12)]">
|
|
19
|
+
<defs>
|
|
20
|
+
<linearGradient id="nodeGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
21
|
+
<stop offset="0%" stopColor="#3B82F6" stopOpacity={1}/>
|
|
22
|
+
<stop offset="100%" stopColor="#2563EB" stopOpacity={1}/>
|
|
23
|
+
</linearGradient>
|
|
24
|
+
|
|
25
|
+
<linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
26
|
+
<stop offset="0%" stopColor="#60A5FA" stopOpacity={0.28}/>
|
|
27
|
+
<stop offset="50%" stopColor="#3B82F6" stopOpacity={0.6}/>
|
|
28
|
+
<stop offset="100%" stopColor="#60A5FA" stopOpacity={0.28}/>
|
|
29
|
+
</linearGradient>
|
|
30
|
+
</defs>
|
|
31
|
+
|
|
32
|
+
{/* Subtle grid for depth */}
|
|
33
|
+
<g className="opacity-30">
|
|
34
|
+
{Array.from({ length: 18 }).map((_, i) => (<line key={`v-${i}`} x1={i * 50} y1={0} x2={i * 50} y2={520} stroke="#e5e7eb" strokeWidth="0.5"/>))}
|
|
35
|
+
{Array.from({ length: 12 }).map((_, i) => (<line key={`h-${i}`} x1={0} y1={i * 45} x2={900} y2={i * 45} stroke="#e5e7eb" strokeWidth="0.5"/>))}
|
|
36
|
+
</g>
|
|
37
|
+
|
|
38
|
+
{/* Connection Lines */}
|
|
39
|
+
<g>
|
|
40
|
+
<line x1="120" y1="80" x2="320" y2="180" stroke="url(#lineGradient)" strokeWidth="2"/>
|
|
41
|
+
<line x1="320" y1="180" x2="600" y2="140" stroke="url(#lineGradient)" strokeWidth="2"/>
|
|
42
|
+
<line x1="600" y1="140" x2="720" y2="340" stroke="url(#lineGradient)" strokeWidth="2"/>
|
|
43
|
+
<line x1="320" y1="180" x2="420" y2="420" stroke="url(#lineGradient)" strokeWidth="2"/>
|
|
44
|
+
<line x1="120" y1="80" x2="220" y2="320" stroke="url(#lineGradient)" strokeWidth="2"/>
|
|
45
|
+
<line x1="220" y1="320" x2="420" y2="420" stroke="url(#lineGradient)" strokeWidth="2"/>
|
|
46
|
+
|
|
47
|
+
<line x1="60" y1="260" x2="120" y2="80" stroke="url(#lineGradient)" strokeWidth="1.5"/>
|
|
48
|
+
<line x1="420" y1="420" x2="580" y2="470" stroke="url(#lineGradient)" strokeWidth="1.5"/>
|
|
49
|
+
<line x1="600" y1="140" x2="780" y2="80" stroke="url(#lineGradient)" strokeWidth="1.5"/>
|
|
50
|
+
<line x1="320" y1="180" x2="540" y2="260" stroke="url(#lineGradient)" strokeWidth="1.5"/>
|
|
51
|
+
<line x1="220" y1="320" x2="540" y2="260" stroke="url(#lineGradient)" strokeWidth="1.5"/>
|
|
52
|
+
</g>
|
|
53
|
+
|
|
54
|
+
{/* Network Nodes */}
|
|
55
|
+
<g>
|
|
56
|
+
<circle cx="320" cy="180" r="12" fill="url(#nodeGradient)" className="pulse-node">
|
|
57
|
+
<animate attributeName="r" values="12;15;12" dur="3s" repeatCount="indefinite"/>
|
|
58
|
+
</circle>
|
|
59
|
+
<circle cx="600" cy="140" r="10" fill="url(#nodeGradient)" className="pulse-node">
|
|
60
|
+
<animate attributeName="r" values="10;13;10" dur="3.5s" repeatCount="indefinite"/>
|
|
61
|
+
</circle>
|
|
62
|
+
|
|
63
|
+
<circle cx="120" cy="80" r="8" fill="#3B82F6" className="pulse-node">
|
|
64
|
+
<animate attributeName="r" values="8;11;8" dur="4s" begin="1s" repeatCount="indefinite"/>
|
|
65
|
+
</circle>
|
|
66
|
+
<circle cx="420" cy="420" r="8" fill="#3B82F6" className="pulse-node">
|
|
67
|
+
<animate attributeName="r" values="8;11;8" dur="4.5s" begin="2.5s" repeatCount="indefinite"/>
|
|
68
|
+
</circle>
|
|
69
|
+
<circle cx="720" cy="340" r="8" fill="#3B82F6" className="pulse-node">
|
|
70
|
+
<animate attributeName="r" values="8;11;8" dur="3.8s" begin="1.8s" repeatCount="indefinite"/>
|
|
71
|
+
</circle>
|
|
72
|
+
<circle cx="220" cy="320" r="8" fill="#3B82F6" className="pulse-node">
|
|
73
|
+
<animate attributeName="r" values="8;11;8" dur="4.2s" begin="0.5s" repeatCount="indefinite"/>
|
|
74
|
+
</circle>
|
|
75
|
+
|
|
76
|
+
<circle cx="60" cy="260" r="5" fill="#60A5FA" className="pulse-node">
|
|
77
|
+
<animate attributeName="r" values="5;7;5" dur="5s" begin="3s" repeatCount="indefinite"/>
|
|
78
|
+
</circle>
|
|
79
|
+
<circle cx="580" cy="470" r="5" fill="#60A5FA" className="pulse-node">
|
|
80
|
+
<animate attributeName="r" values="5;7;5" dur="5.5s" begin="4s" repeatCount="indefinite"/>
|
|
81
|
+
</circle>
|
|
82
|
+
<circle cx="780" cy="80" r="5" fill="#60A5FA" className="pulse-node">
|
|
83
|
+
<animate attributeName="r" values="5;7;5" dur="4.8s" begin="2s" repeatCount="indefinite"/>
|
|
84
|
+
</circle>
|
|
85
|
+
|
|
86
|
+
{/* Extra tiny detail nodes */}
|
|
87
|
+
<circle cx="200" cy="100" r="3" fill="#93C5FD"/>
|
|
88
|
+
<circle cx="380" cy="200" r="3" fill="#93C5FD"/>
|
|
89
|
+
<circle cx="150" cy="320" r="3" fill="#93C5FD"/>
|
|
90
|
+
<circle cx="500" cy="260" r="3" fill="#93C5FD"/>
|
|
91
|
+
<circle cx="660" cy="220" r="3" fill="#93C5FD"/>
|
|
92
|
+
<circle cx="740" cy="420" r="3" fill="#93C5FD"/>
|
|
93
|
+
</g>
|
|
94
|
+
</svg>
|
|
95
|
+
|
|
96
|
+
{/* Component-scoped CSS for subtle effects */}
|
|
97
|
+
<style>{`
|
|
98
|
+
.pulse-node {
|
|
99
|
+
filter: drop-shadow(0 0 8px rgba(37, 99, 235, 0.3));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@keyframes slow-pan {
|
|
103
|
+
0% {
|
|
104
|
+
transform: scale(1.08) translateY(0px);
|
|
105
|
+
}
|
|
106
|
+
50% {
|
|
107
|
+
transform: scale(1.1) translateY(-6px);
|
|
108
|
+
}
|
|
109
|
+
100% {
|
|
110
|
+
transform: scale(1.08) translateY(0px);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
svg {
|
|
115
|
+
animation: slow-pan 18s ease-in-out infinite;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@media (max-width: 768px) {
|
|
119
|
+
svg {
|
|
120
|
+
transform: scale(1.15);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
`}</style>
|
|
124
|
+
</div>);
|
|
125
|
+
};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { PortfolioSimple } from "@nextworks/blocks-sections";
|
|
4
|
+
// Default portfolio data without images - Digital Marketing Agency focused
|
|
5
|
+
const defaultProjects = [
|
|
6
|
+
{
|
|
7
|
+
id: 1,
|
|
8
|
+
title: "TechStartup Growth Campaign",
|
|
9
|
+
category: "Digital Marketing",
|
|
10
|
+
industry: "Technology",
|
|
11
|
+
result: "+300% Leads",
|
|
12
|
+
description: "Comprehensive digital marketing campaign that increased qualified leads by 300% through targeted SEO, social media marketing, and conversion optimization strategies.",
|
|
13
|
+
tags: ["SEO", "Social Media", "PPC", "Analytics"],
|
|
14
|
+
color: "blue",
|
|
15
|
+
url: "#",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: 2,
|
|
19
|
+
title: "E-Commerce Brand Launch",
|
|
20
|
+
category: "Brand Marketing",
|
|
21
|
+
industry: "Retail",
|
|
22
|
+
result: "+250% Revenue",
|
|
23
|
+
description: "Complete brand launch and digital marketing strategy for a new e-commerce platform, resulting in 250% revenue growth within the first 6 months.",
|
|
24
|
+
tags: ["Brand Strategy", "Content Marketing", "Influencer", "Email"],
|
|
25
|
+
color: "green",
|
|
26
|
+
url: "#",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 3,
|
|
30
|
+
title: "Healthcare Practice Expansion",
|
|
31
|
+
category: "Local Marketing",
|
|
32
|
+
industry: "Healthcare",
|
|
33
|
+
result: "+180% Patients",
|
|
34
|
+
description: "Local SEO and digital marketing campaign that helped a healthcare practice expand to three new locations and increase patient acquisition by 180%.",
|
|
35
|
+
tags: ["Local SEO", "Google Ads", "Reputation", "Content"],
|
|
36
|
+
color: "purple",
|
|
37
|
+
url: "#",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 4,
|
|
41
|
+
title: "SaaS Product Launch",
|
|
42
|
+
category: "B2B Marketing",
|
|
43
|
+
industry: "Software",
|
|
44
|
+
result: "+400% Signups",
|
|
45
|
+
description: "Strategic B2B marketing campaign for a SaaS product launch, achieving 400% increase in trial signups through targeted content marketing and account-based marketing.",
|
|
46
|
+
tags: ["B2B Strategy", "Content", "LinkedIn Ads", "Webinars"],
|
|
47
|
+
color: "indigo",
|
|
48
|
+
url: "#",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 5,
|
|
52
|
+
title: "Restaurant Chain Rebrand",
|
|
53
|
+
category: "Brand Marketing",
|
|
54
|
+
industry: "Food & Beverage",
|
|
55
|
+
result: "+220% Foot Traffic",
|
|
56
|
+
description: "Complete rebrand and digital marketing transformation for a restaurant chain, resulting in 220% increase in foot traffic and 150% growth in online orders.",
|
|
57
|
+
tags: ["Rebranding", "Social Media", "Local SEO", "Delivery"],
|
|
58
|
+
color: "red",
|
|
59
|
+
url: "#",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: 6,
|
|
63
|
+
title: "Fitness App User Acquisition",
|
|
64
|
+
category: "Mobile Marketing",
|
|
65
|
+
industry: "Health & Fitness",
|
|
66
|
+
result: "+500% Downloads",
|
|
67
|
+
description: "Mobile-first marketing campaign that achieved 500% increase in app downloads through app store optimization, influencer partnerships, and targeted social media advertising.",
|
|
68
|
+
tags: ["ASO", "Influencer", "Social Ads", "Retention"],
|
|
69
|
+
color: "yellow",
|
|
70
|
+
url: "#",
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
const defaultFilters = [
|
|
74
|
+
"All Projects",
|
|
75
|
+
"Digital Marketing",
|
|
76
|
+
"Brand Marketing",
|
|
77
|
+
"B2B Marketing",
|
|
78
|
+
"Local Marketing",
|
|
79
|
+
"Mobile Marketing",
|
|
80
|
+
];
|
|
81
|
+
// Portfolio Preset Component
|
|
82
|
+
export function Portfolio() {
|
|
83
|
+
return (<section id="portfolio">
|
|
84
|
+
<PortfolioSimple enableMotion={true} projects={defaultProjects} filters={defaultFilters} sectionTitle="Our Portfolio" sectionSubtitle="Discover our successful projects that have transformed businesses across various industries with innovative digital solutions." ctaTitle="Ready to Start Your Project?" ctaDescription="Let's work together to create something amazing that drives real results for your business." section={{
|
|
85
|
+
className: "py-16 md:py-24 bg-background",
|
|
86
|
+
}} title={{
|
|
87
|
+
className: "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins text-[var(--heading-fg)]",
|
|
88
|
+
}} subtitle={{
|
|
89
|
+
className: "text-xl md:text-2xl font-inter text-[var(--subheading-fg)] max-w-2xl mx-auto leading-relaxed",
|
|
90
|
+
}} ctaTitleStyle={{
|
|
91
|
+
className: "text-2xl md:text-3xl font-bold text-[var(--heading-fg)]",
|
|
92
|
+
}} ctaDescriptionStyle={{
|
|
93
|
+
className: "text-lg md:text-xl text-[var(--subheading-fg)] max-w-md mx-auto",
|
|
94
|
+
}} tagStyle={{
|
|
95
|
+
className: "px-2 py-1 text-xs rounded-full border-[var(--badge-border)] text-[var(--badge-fg)] bg-[var(--badge-bg)]",
|
|
96
|
+
}} ctaSection={{
|
|
97
|
+
className: "space-y-6 text-center mt-16 pt-12 border-t border-[var(--footer-border)]",
|
|
98
|
+
}} cta1Label="Start Your Project" cta1Href="#contact" cta2Label="View All Projects" cta2Href="#portfolio" cta1Button={{
|
|
99
|
+
className: "h-10 px-6 flex items-center justify-center font-medium shadow-md hover:shadow-lg transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:theme(colors.fuchsia.600)] hover:[--btn-hover-bg:theme(colors.fuchsia.700)] [--btn-fg:theme(colors.white)] hover:[--btn-hover-fg:theme(colors.white)]",
|
|
100
|
+
}} cta2Button={{
|
|
101
|
+
className: "h-10 px-6 flex items-center justify-center font-medium shadow-md hover:shadow-lg transition-all duration-200 hover:-translate-y-0.5 border-2 [--btn-bg:transparent] [--btn-fg:theme(colors.fuchsia.700)] [--btn-border:theme(colors.fuchsia.600)] hover:[--btn-hover-bg:theme(colors.fuchsia.600)] hover:[--btn-hover-fg:theme(colors.white)] dark:[--btn-fg:theme(colors.fuchsia.400)] dark:[--btn-border:theme(colors.fuchsia.500)] dark:hover:[--btn-hover-bg:theme(colors.fuchsia.500)] dark:hover:[--btn-hover-fg:theme(colors.white)]",
|
|
102
|
+
}} ariaLabel="Portfolio showcase section"/>
|
|
103
|
+
</section>);
|
|
104
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type Props = React.PropsWithChildren<{
|
|
3
|
+
className?: string;
|
|
4
|
+
}>;
|
|
5
|
+
/**
|
|
6
|
+
* Gallery template token-bridge wrapper.
|
|
7
|
+
*
|
|
8
|
+
* Maps component-level CSS variables (btn, input, card, etc.) to the
|
|
9
|
+
* EnhancedThemeProvider token variables applied on :root (e.g., --primary,
|
|
10
|
+
* --foreground, --card, --ring).
|
|
11
|
+
* Colors are driven by the selected Color Theme, not a fixed preset palette.
|
|
12
|
+
*/
|
|
13
|
+
export declare function PresetThemeVars({ className, children }: Props): React.JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=PresetThemeVars.d.ts.map
|
|
@@ -5,8 +5,8 @@ import { cn } from "@nextworks/blocks-core";
|
|
|
5
5
|
*
|
|
6
6
|
* Maps component-level CSS variables (btn, input, card, etc.) to the
|
|
7
7
|
* EnhancedThemeProvider token variables applied on :root (e.g., --primary,
|
|
8
|
-
* --foreground, --card, --ring).
|
|
9
|
-
*
|
|
8
|
+
* --foreground, --card, --ring).
|
|
9
|
+
* Colors are driven by the selected Color Theme, not a fixed preset palette.
|
|
10
10
|
*/
|
|
11
11
|
export function PresetThemeVars({ className, children }) {
|
|
12
12
|
return (<div className={cn(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/templates/gallery/page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/templates/gallery/page.tsx"],"names":[],"mappings":"AA2BA,MAAM,CAAC,OAAO,UAAU,OAAO,gCAqR9B"}
|