nextworks 0.2.0-alpha.11 → 0.2.0-alpha.13

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 (111) hide show
  1. package/README.md +283 -282
  2. package/dist/cli_manifests/blocks_manifest.json +198 -175
  3. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +101 -100
  4. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +105 -104
  5. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +1 -1
  6. package/dist/kits/blocks/app/templates/aiworkflow/PresetThemeVars.tsx +58 -0
  7. package/dist/kits/blocks/app/templates/aiworkflow/README.md +46 -0
  8. package/dist/kits/blocks/app/templates/aiworkflow/components/CTA.tsx +44 -0
  9. package/dist/kits/blocks/app/templates/aiworkflow/components/Contact.tsx +105 -0
  10. package/dist/kits/blocks/app/templates/aiworkflow/components/FAQ.tsx +63 -0
  11. package/dist/kits/blocks/app/templates/aiworkflow/components/Features.tsx +65 -0
  12. package/dist/kits/blocks/app/templates/aiworkflow/components/Footer.tsx +109 -0
  13. package/dist/kits/blocks/app/templates/aiworkflow/components/Hero.tsx +636 -0
  14. package/dist/kits/blocks/app/templates/aiworkflow/components/Navbar.tsx +90 -0
  15. package/dist/kits/blocks/app/templates/aiworkflow/components/Pricing.tsx +86 -0
  16. package/dist/kits/blocks/app/templates/aiworkflow/components/ProcessTimeline.tsx +103 -0
  17. package/dist/kits/blocks/app/templates/aiworkflow/components/Testimonials.tsx +56 -0
  18. package/dist/kits/blocks/app/templates/aiworkflow/components/TrustBadges.tsx +59 -0
  19. package/dist/kits/blocks/app/templates/aiworkflow/page.tsx +43 -0
  20. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
  21. package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -42
  22. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
  23. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
  27. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
  28. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +84 -84
  29. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -75
  30. package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -62
  31. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -84
  32. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -50
  33. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
  34. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -86
  35. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -83
  36. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
  37. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -88
  38. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -116
  39. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
  40. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
  41. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
  42. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
  43. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -90
  44. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
  45. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
  46. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
  47. package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -44
  48. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -129
  49. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
  50. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
  51. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -90
  52. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
  53. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -104
  54. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -126
  55. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -117
  56. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
  57. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -96
  58. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
  59. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
  60. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
  61. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -195
  62. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
  63. package/dist/kits/blocks/components/sections/About.tsx +291 -291
  64. package/dist/kits/blocks/components/sections/CTA.tsx +257 -257
  65. package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
  66. package/dist/kits/blocks/components/sections/FAQ.tsx +214 -214
  67. package/dist/kits/blocks/components/sections/Features.tsx +268 -268
  68. package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
  69. package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
  70. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
  71. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +236 -0
  72. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
  73. package/dist/kits/blocks/components/sections/Navbar.tsx +350 -350
  74. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -549
  75. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
  76. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
  77. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
  78. package/dist/kits/blocks/components/sections/Team.tsx +309 -309
  79. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
  80. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
  81. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +125 -0
  82. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +397 -0
  83. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +128 -0
  84. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +127 -0
  85. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +150 -0
  86. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +191 -0
  87. package/dist/kits/blocks/components/sections/product-demo/types.ts +193 -0
  88. package/dist/kits/blocks/components/theme-provider.tsx +1 -1
  89. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
  90. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
  91. package/dist/kits/blocks/components/ui/button.tsx +122 -122
  92. package/dist/kits/blocks/components/ui/card.tsx +95 -95
  93. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
  94. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
  95. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
  96. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
  97. package/dist/kits/blocks/components/ui/input.tsx +27 -27
  98. package/dist/kits/blocks/components/ui/label.tsx +29 -29
  99. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
  100. package/dist/kits/blocks/components/ui/select.tsx +25 -25
  101. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
  102. package/dist/kits/blocks/components/ui/table.tsx +98 -98
  103. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
  104. package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
  105. package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -243
  106. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
  107. package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
  108. package/dist/kits/blocks/lib/themes.ts +400 -400
  109. package/dist/kits/blocks/lib/utils.ts +6 -6
  110. package/dist/kits/blocks/package-deps.json +3 -3
  111. package/package.json +1 -1
@@ -1,65 +1,65 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { Testimonials as SharedTestimonials } from "@/components/sections/Testimonials";
5
-
6
- export function Testimonials() {
7
- return (
8
- <section id="testimonials">
9
- <SharedTestimonials
10
- testimonialSectionHeader="What Our Customers Say"
11
- section={{
12
- className: "py-16 md:py-20 lg:py-24 bg-fuchsia-50 dark:bg-gray-800",
13
- }}
14
- container={{ className: "max-w-7xl mx-auto px-6" }}
15
- header={{ className: "text-center mb-12 md:mb-16" }}
16
- heading={{
17
- className:
18
- "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins text-gray-800 dark:text-white",
19
- }}
20
- grid={{
21
- className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
22
- }}
23
- card={{
24
- className:
25
- "bg-white dark:bg-gray-900 p-6 rounded-lg shadow-md transition-transform duration-200 hover:-translate-y-1 border border-fuchsia-200/60 dark:border-fuchsia-800/40",
26
- }}
27
- text={{
28
- className:
29
- "text-gray-700 dark:text-gray-300 text-base leading-relaxed italic font-inter",
30
- }}
31
- author={{
32
- className:
33
- "text-gray-600 dark:text-gray-400 text-sm font-medium font-poppins",
34
- }}
35
- avatar={{
36
- className:
37
- "w-12 h-12 bg-fuchsia-600 text-white rounded-full flex items-center justify-center text-lg font-bold",
38
- }}
39
- avatarText={{
40
- className: "text-white font-bold",
41
- }}
42
- testimonials={[
43
- {
44
- testimonialText:
45
- "Nexus Digital transformed our online presence completely.",
46
- testimonialAuthor: "- Sarah Chen, CEO of TechFlow",
47
- testimonialAuthorInitials: "SC",
48
- },
49
- {
50
- testimonialText: "The team delivered beyond expectations.",
51
- testimonialAuthor: "- Marcus Rodriguez, GreenLeaf Wellness",
52
- testimonialAuthorInitials: "MR",
53
- },
54
- {
55
- testimonialText:
56
- "Professional, fast, and results-driven. They understood our vision and brought it to life perfectly.",
57
- testimonialAuthor: "- Jennifer Walsh, UrbanFit",
58
- testimonialAuthorInitials: "JW",
59
- },
60
- ]}
61
- ariaLabel="Testimonials section"
62
- />
63
- </section>
64
- );
65
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import { Testimonials as SharedTestimonials } from "@/components/sections/Testimonials";
5
+
6
+ export function Testimonials() {
7
+ return (
8
+ <section id="testimonials">
9
+ <SharedTestimonials
10
+ testimonialSectionHeader="What Our Customers Say"
11
+ section={{
12
+ className: "py-16 md:py-20 lg:py-24 bg-fuchsia-50 dark:bg-gray-800",
13
+ }}
14
+ container={{ className: "max-w-7xl mx-auto px-6" }}
15
+ header={{ className: "text-center mb-12 md:mb-16" }}
16
+ heading={{
17
+ className:
18
+ "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins text-gray-800 dark:text-white",
19
+ }}
20
+ grid={{
21
+ className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
22
+ }}
23
+ card={{
24
+ className:
25
+ "bg-white dark:bg-gray-900 p-6 rounded-lg shadow-md transition-transform duration-200 hover:-translate-y-1 border border-fuchsia-200/60 dark:border-fuchsia-800/40",
26
+ }}
27
+ text={{
28
+ className:
29
+ "text-gray-700 dark:text-gray-300 text-base leading-relaxed italic font-inter",
30
+ }}
31
+ author={{
32
+ className:
33
+ "text-gray-600 dark:text-gray-400 text-sm font-medium font-poppins",
34
+ }}
35
+ avatar={{
36
+ className:
37
+ "w-12 h-12 bg-fuchsia-600 text-white rounded-full flex items-center justify-center text-lg font-bold",
38
+ }}
39
+ avatarText={{
40
+ className: "text-white font-bold",
41
+ }}
42
+ testimonials={[
43
+ {
44
+ testimonialText:
45
+ "Nexus Digital transformed our online presence completely.",
46
+ testimonialAuthor: "- Sarah Chen, CEO of TechFlow",
47
+ testimonialAuthorInitials: "SC",
48
+ },
49
+ {
50
+ testimonialText: "The team delivered beyond expectations.",
51
+ testimonialAuthor: "- Marcus Rodriguez, GreenLeaf Wellness",
52
+ testimonialAuthorInitials: "MR",
53
+ },
54
+ {
55
+ testimonialText:
56
+ "Professional, fast, and results-driven. They understood our vision and brought it to life perfectly.",
57
+ testimonialAuthor: "- Jennifer Walsh, UrbanFit",
58
+ testimonialAuthorInitials: "JW",
59
+ },
60
+ ]}
61
+ ariaLabel="Testimonials section"
62
+ />
63
+ </section>
64
+ );
65
+ }
@@ -1,38 +1,38 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { Navbar } from "./components/Navbar";
5
- import { Hero } from "./components/Hero";
6
- import { Services } from "./components/Services";
7
- import { Testimonials } from "./components/Testimonials";
8
- import { Process } from "./components/Process";
9
- import { Portfolio } from "./components/Portfolio";
10
- import { About } from "./components/About";
11
- import { Team } from "./components/Team";
12
- import { Pricing } from "./components/Pricing";
13
- import { CTA } from "./components/CTA";
14
- import { Contact } from "./components/Contact";
15
- import { Footer } from "./components/Footer";
16
-
17
- import { PresetThemeVars } from "./PresetThemeVars";
18
-
19
- export default function Page() {
20
- return (
21
- <PresetThemeVars>
22
- <main>
23
- <Navbar />
24
- <Hero />
25
- <Services />
26
- <Portfolio />
27
- <Testimonials />
28
- <Process />
29
- <About />
30
- <Team />
31
- <Pricing />
32
- <CTA />
33
- <Contact />
34
- <Footer />
35
- </main>
36
- </PresetThemeVars>
37
- );
38
- }
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import { Navbar } from "./components/Navbar";
5
+ import { Hero } from "./components/Hero";
6
+ import { Services } from "./components/Services";
7
+ import { Testimonials } from "./components/Testimonials";
8
+ import { Process } from "./components/Process";
9
+ import { Portfolio } from "./components/Portfolio";
10
+ import { About } from "./components/About";
11
+ import { Team } from "./components/Team";
12
+ import { Pricing } from "./components/Pricing";
13
+ import { CTA } from "./components/CTA";
14
+ import { Contact } from "./components/Contact";
15
+ import { Footer } from "./components/Footer";
16
+
17
+ import { PresetThemeVars } from "./PresetThemeVars";
18
+
19
+ export default function Page() {
20
+ return (
21
+ <PresetThemeVars>
22
+ <main>
23
+ <Navbar />
24
+ <Hero />
25
+ <Services />
26
+ <Portfolio />
27
+ <Testimonials />
28
+ <Process />
29
+ <About />
30
+ <Team />
31
+ <Pricing />
32
+ <CTA />
33
+ <Contact />
34
+ <Footer />
35
+ </main>
36
+ </PresetThemeVars>
37
+ );
38
+ }
@@ -1,84 +1,84 @@
1
- import React from "react";
2
- import { cn } from "@/lib/utils";
3
-
4
- type Props = React.PropsWithChildren<{ className?: string }>;
5
-
6
- /**
7
- * Gallery template token-bridge wrapper.
8
- *
9
- * Maps component-level CSS variables (btn, input, card, etc.) to the
10
- * EnhancedThemeProvider token variables applied on :root (e.g., --primary,
11
- * --foreground, --card, --ring). Colors are driven by the selected Color Theme, not a fixed preset palette.
12
- */
13
- export function PresetThemeVars({ className, children }: Props) {
14
- return (
15
- <div
16
- className={cn(
17
- // Buttons (leave bg/fg unset by default so tokenized variants can apply; set ring here)
18
- "[--btn-ring:var(--ring)]",
19
-
20
- // Inputs
21
- "[--input-bg:var(--background)]",
22
- "[--input-fg:var(--foreground)]",
23
- "[--input-placeholder:var(--muted-foreground)]",
24
- "[--input-border:var(--input)]",
25
- "[--input-focus-ring:var(--ring)]",
26
- "[--input-ring-offset:var(--background)]",
27
-
28
- // Cards
29
- "[--card-bg:var(--card)]",
30
- "[--card-fg:var(--card-foreground)]",
31
- "[--card-title-fg:var(--foreground)]",
32
- "[--card-muted-fg:var(--muted-foreground)]",
33
- "[--card-border:var(--border)]",
34
- "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
35
-
36
- // Badges/Chips (align to accent; active uses primary)
37
- "[--badge-bg:var(--accent)]",
38
- "[--badge-fg:var(--accent-foreground)]",
39
- "[--badge-border:var(--border)]",
40
- "[--badge-active-bg:var(--primary)]",
41
- "[--badge-active-fg:var(--primary-foreground)]",
42
- "[--badge-active-border:var(--primary)]",
43
-
44
- // Typography helpers
45
- "[--heading-fg:var(--foreground)]",
46
- "[--subheading-fg:var(--muted-foreground)]",
47
- "[--description-fg:var(--foreground)]",
48
-
49
- // Process timeline
50
- "[--process-step-bg:var(--primary)]",
51
- "[--process-step-fg:var(--primary-foreground)]",
52
- "[--process-connector:var(--border)]",
53
-
54
- // Footer
55
- "[--footer-bg:transparent]",
56
- "[--footer-fg:var(--foreground)]",
57
- "[--footer-heading-fg:var(--foreground)]",
58
- "[--footer-link-fg:var(--muted-foreground)]",
59
- "[--footer-link-hover-fg:var(--primary)]",
60
- "[--footer-link-hover-bg:color-mix(in oklab, var(--primary) 12%, transparent)]",
61
- "[--footer-muted-fg:var(--muted-foreground)]",
62
- "[--footer-border:var(--border)]",
63
-
64
- // Table (optional)
65
- "[--table-fg:inherit]",
66
- "[--table-muted-fg:var(--muted-foreground)]",
67
- "[--table-head-fg:var(--foreground)]",
68
- "[--table-border:var(--border)]",
69
- "[--table-row-hover-bg:var(--muted)]",
70
-
71
- // Navbar
72
- "[--navbar-toggle-bg:var(--background)]",
73
- "[--navbar-hover-bg:color-mix(in oklab, var(--primary) 12%, transparent)]",
74
- "[--navbar-ring:var(--ring)]",
75
- "[--navbar-border:var(--border)]",
76
- "[--navbar-accent:var(--foreground)]",
77
-
78
- className,
79
- )}
80
- >
81
- {children}
82
- </div>
83
- );
84
- }
1
+ import React from "react";
2
+ import { cn } from "@/lib/utils";
3
+
4
+ type Props = React.PropsWithChildren<{ className?: string }>;
5
+
6
+ /**
7
+ * Gallery template token-bridge wrapper.
8
+ *
9
+ * Maps component-level CSS variables (btn, input, card, etc.) to the
10
+ * EnhancedThemeProvider token variables applied on :root (e.g., --primary,
11
+ * --foreground, --card, --ring). Colors are driven by the selected Color Theme, not a fixed preset palette.
12
+ */
13
+ export function PresetThemeVars({ className, children }: Props) {
14
+ return (
15
+ <div
16
+ className={cn(
17
+ // Buttons (leave bg/fg unset by default so tokenized variants can apply; set ring here)
18
+ "[--btn-ring:var(--ring)]",
19
+
20
+ // Inputs
21
+ "[--input-bg:var(--background)]",
22
+ "[--input-fg:var(--foreground)]",
23
+ "[--input-placeholder:var(--muted-foreground)]",
24
+ "[--input-border:var(--input)]",
25
+ "[--input-focus-ring:var(--ring)]",
26
+ "[--input-ring-offset:var(--background)]",
27
+
28
+ // Cards
29
+ "[--card-bg:var(--card)]",
30
+ "[--card-fg:var(--card-foreground)]",
31
+ "[--card-title-fg:var(--foreground)]",
32
+ "[--card-muted-fg:var(--muted-foreground)]",
33
+ "[--card-border:var(--border)]",
34
+ "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
35
+
36
+ // Badges/Chips (align to accent; active uses primary)
37
+ "[--badge-bg:var(--accent)]",
38
+ "[--badge-fg:var(--accent-foreground)]",
39
+ "[--badge-border:var(--border)]",
40
+ "[--badge-active-bg:var(--primary)]",
41
+ "[--badge-active-fg:var(--primary-foreground)]",
42
+ "[--badge-active-border:var(--primary)]",
43
+
44
+ // Typography helpers
45
+ "[--heading-fg:var(--foreground)]",
46
+ "[--subheading-fg:var(--muted-foreground)]",
47
+ "[--description-fg:var(--foreground)]",
48
+
49
+ // Process timeline
50
+ "[--process-step-bg:var(--primary)]",
51
+ "[--process-step-fg:var(--primary-foreground)]",
52
+ "[--process-connector:var(--border)]",
53
+
54
+ // Footer
55
+ "[--footer-bg:transparent]",
56
+ "[--footer-fg:var(--foreground)]",
57
+ "[--footer-heading-fg:var(--foreground)]",
58
+ "[--footer-link-fg:var(--muted-foreground)]",
59
+ "[--footer-link-hover-fg:var(--primary)]",
60
+ "[--footer-link-hover-bg:color-mix(in oklab, var(--primary) 12%, transparent)]",
61
+ "[--footer-muted-fg:var(--muted-foreground)]",
62
+ "[--footer-border:var(--border)]",
63
+
64
+ // Table (optional)
65
+ "[--table-fg:inherit]",
66
+ "[--table-muted-fg:var(--muted-foreground)]",
67
+ "[--table-head-fg:var(--foreground)]",
68
+ "[--table-border:var(--border)]",
69
+ "[--table-row-hover-bg:var(--muted)]",
70
+
71
+ // Navbar
72
+ "[--navbar-toggle-bg:var(--background)]",
73
+ "[--navbar-hover-bg:color-mix(in oklab, var(--primary) 12%, transparent)]",
74
+ "[--navbar-ring:var(--ring)]",
75
+ "[--navbar-border:var(--border)]",
76
+ "[--navbar-accent:var(--foreground)]",
77
+
78
+ className,
79
+ )}
80
+ >
81
+ {children}
82
+ </div>
83
+ );
84
+ }
@@ -1,75 +1,75 @@
1
- import React from "react";
2
- import { cn } from "@/lib/utils";
3
-
4
- type Props = React.PropsWithChildren<{ className?: string }>;
5
-
6
- /**
7
- * ProductLaunch template theme variables wrapper.
8
- * Not used by default for the ProductLaunch template.
9
- *
10
- * Sets a small CSS variable contract consumed by shared components
11
- * (Buttons, Inputs, Cards, Badges, Footer, Table, etc.).
12
- *
13
- * You can override any variable per-section by re-declaring it on
14
- * that section/container.
15
- */
16
- export function PresetThemeVars({ className, children }: Props) {
17
- return (
18
- <div
19
- className={cn(
20
- // Button ring shared across template
21
- "[--btn-ring:theme(colors.purple.500)] dark:[--btn-ring:theme(colors.purple.400)]",
22
-
23
- // Inputs (Contact)
24
- "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
25
- "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
26
- "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
27
- "[--input-border:theme(colors.purple.200)] dark:[--input-border:theme(colors.purple.700)]",
28
- "[--input-focus-ring:theme(colors.purple.500)] dark:[--input-focus-ring:theme(colors.purple.400)]",
29
- "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
30
-
31
- // Cards (Features, ServicesGrid, Pricing, Testimonials, etc.)
32
- "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
33
- "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
34
- "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
35
- "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
36
- "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
37
- "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
38
-
39
- // Badges/Chips (Portfolio filters/tags, Pricing badge, Testimonials avatar)
40
- "[--badge-bg:theme(colors.purple.50)] dark:[--badge-bg:theme(colors.purple.950)]",
41
- "[--badge-fg:theme(colors.purple.700)] dark:[--badge-fg:theme(colors.purple.300)]",
42
- "[--badge-border:theme(colors.purple.200)] dark:[--badge-border:theme(colors.purple.800)]",
43
- "[--badge-active-bg:theme(colors.purple.600)] dark:[--badge-active-bg:theme(colors.purple.500)]",
44
- "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
45
- "[--badge-active-border:theme(colors.purple.700)] dark:[--badge-active-border:theme(colors.purple.400)]",
46
-
47
- // Headings/Subheadings
48
- "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
49
- "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
50
- "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
51
-
52
- // Footer
53
- "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
54
- "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
55
- "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
56
- "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
57
- "[--footer-link-hover-fg:theme(colors.purple.700)] dark:[--footer-link-hover-fg:theme(colors.purple.400)]",
58
- "[--footer-link-hover-bg:theme(colors.purple.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_324)_20%,transparent)]",
59
- "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
60
- "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
61
-
62
- // Table (optional)
63
- "[--table-fg:inherit]",
64
- "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
65
- "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
66
- "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
67
- "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
68
-
69
- className,
70
- )}
71
- >
72
- {children}
73
- </div>
74
- );
75
- }
1
+ import React from "react";
2
+ import { cn } from "@/lib/utils";
3
+
4
+ type Props = React.PropsWithChildren<{ className?: string }>;
5
+
6
+ /**
7
+ * ProductLaunch template theme variables wrapper.
8
+ * Not used by default for the ProductLaunch template.
9
+ *
10
+ * Sets a small CSS variable contract consumed by shared components
11
+ * (Buttons, Inputs, Cards, Badges, Footer, Table, etc.).
12
+ *
13
+ * You can override any variable per-section by re-declaring it on
14
+ * that section/container.
15
+ */
16
+ export function PresetThemeVars({ className, children }: Props) {
17
+ return (
18
+ <div
19
+ className={cn(
20
+ // Button ring shared across template
21
+ "[--btn-ring:theme(colors.purple.500)] dark:[--btn-ring:theme(colors.purple.400)]",
22
+
23
+ // Inputs (Contact)
24
+ "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
25
+ "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
26
+ "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
27
+ "[--input-border:theme(colors.purple.200)] dark:[--input-border:theme(colors.purple.700)]",
28
+ "[--input-focus-ring:theme(colors.purple.500)] dark:[--input-focus-ring:theme(colors.purple.400)]",
29
+ "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
30
+
31
+ // Cards (Features, ServicesGrid, Pricing, Testimonials, etc.)
32
+ "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
33
+ "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
34
+ "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
35
+ "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
36
+ "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
37
+ "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
38
+
39
+ // Badges/Chips (Portfolio filters/tags, Pricing badge, Testimonials avatar)
40
+ "[--badge-bg:theme(colors.purple.50)] dark:[--badge-bg:theme(colors.purple.950)]",
41
+ "[--badge-fg:theme(colors.purple.700)] dark:[--badge-fg:theme(colors.purple.300)]",
42
+ "[--badge-border:theme(colors.purple.200)] dark:[--badge-border:theme(colors.purple.800)]",
43
+ "[--badge-active-bg:theme(colors.purple.600)] dark:[--badge-active-bg:theme(colors.purple.500)]",
44
+ "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
45
+ "[--badge-active-border:theme(colors.purple.700)] dark:[--badge-active-border:theme(colors.purple.400)]",
46
+
47
+ // Headings/Subheadings
48
+ "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
49
+ "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
50
+ "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
51
+
52
+ // Footer
53
+ "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
54
+ "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
55
+ "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
56
+ "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
57
+ "[--footer-link-hover-fg:theme(colors.purple.700)] dark:[--footer-link-hover-fg:theme(colors.purple.400)]",
58
+ "[--footer-link-hover-bg:theme(colors.purple.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_324)_20%,transparent)]",
59
+ "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
60
+ "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
61
+
62
+ // Table (optional)
63
+ "[--table-fg:inherit]",
64
+ "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
65
+ "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
66
+ "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
67
+ "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
68
+
69
+ className,
70
+ )}
71
+ >
72
+ {children}
73
+ </div>
74
+ );
75
+ }