nextworks 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.
Files changed (145) hide show
  1. package/README.md +280 -228
  2. package/dist/cli_manifests/blocks_manifest.json +193 -194
  3. package/dist/commands/blocks.d.ts +3 -0
  4. package/dist/commands/blocks.d.ts.map +1 -1
  5. package/dist/commands/blocks.js +128 -19
  6. package/dist/commands/blocks.js.map +1 -1
  7. package/dist/commands/doctor.d.ts +136 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +696 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/remove-blocks.d.ts +4 -1
  12. package/dist/commands/remove-blocks.d.ts.map +1 -1
  13. package/dist/commands/remove-blocks.js +24 -6
  14. package/dist/commands/remove-blocks.js.map +1 -1
  15. package/dist/index.js +125 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +104 -194
  18. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +115 -75
  19. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -251
  20. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
  21. package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -36
  22. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
  23. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
  27. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
  28. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
  29. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
  30. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
  31. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
  32. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
  33. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
  34. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
  35. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
  36. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +130 -85
  37. package/dist/kits/blocks/app/templates/gallery/page.tsx +357 -303
  38. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -74
  39. package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -55
  40. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -178
  41. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -93
  42. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
  43. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -93
  44. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -84
  45. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
  46. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -89
  47. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -162
  48. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
  49. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
  50. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
  51. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
  52. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -89
  53. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
  54. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
  55. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
  56. package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -38
  57. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -176
  58. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
  59. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
  60. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -91
  61. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
  62. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -105
  63. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -127
  64. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -159
  65. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
  66. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -97
  67. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
  68. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
  69. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
  70. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -183
  71. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
  72. package/dist/kits/blocks/components/sections/About.tsx +291 -291
  73. package/dist/kits/blocks/components/sections/CTA.tsx +257 -258
  74. package/dist/kits/blocks/components/sections/CommandShowcase.tsx +517 -0
  75. package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
  76. package/dist/kits/blocks/components/sections/FAQ.tsx +214 -225
  77. package/dist/kits/blocks/components/sections/FeaturedProjectShowcase.tsx +687 -0
  78. package/dist/kits/blocks/components/sections/Features.tsx +268 -270
  79. package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
  80. package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
  81. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
  82. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +246 -0
  83. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
  84. package/dist/kits/blocks/components/sections/HeroWithVideo.tsx +495 -0
  85. package/dist/kits/blocks/components/sections/Navbar.tsx +352 -353
  86. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -550
  87. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
  88. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
  89. package/dist/kits/blocks/components/sections/ProjectDeepDive.tsx +805 -0
  90. package/dist/kits/blocks/components/sections/SelectedWorkRail.tsx +485 -0
  91. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
  92. package/dist/kits/blocks/components/sections/Team.tsx +309 -309
  93. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
  94. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
  95. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +128 -0
  96. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +519 -0
  97. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +140 -0
  98. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +130 -0
  99. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +430 -0
  100. package/dist/kits/blocks/components/sections/product-demo/TaskListPanel.tsx +302 -0
  101. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +744 -0
  102. package/dist/kits/blocks/components/sections/product-demo/types.ts +262 -0
  103. package/dist/kits/blocks/components/theme-provider.tsx +1 -34
  104. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
  105. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
  106. package/dist/kits/blocks/components/ui/button.tsx +122 -122
  107. package/dist/kits/blocks/components/ui/card.tsx +95 -95
  108. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
  109. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
  110. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
  111. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
  112. package/dist/kits/blocks/components/ui/input.tsx +27 -27
  113. package/dist/kits/blocks/components/ui/label.tsx +29 -29
  114. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
  115. package/dist/kits/blocks/components/ui/select.tsx +25 -25
  116. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
  117. package/dist/kits/blocks/components/ui/table.tsx +98 -98
  118. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
  119. package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
  120. package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -247
  121. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
  122. package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
  123. package/dist/kits/blocks/lib/themes.ts +400 -400
  124. package/dist/kits/blocks/lib/utils.ts +6 -9
  125. package/dist/kits/blocks/package-deps.json +40 -28
  126. package/dist/kits/blocks/tsconfig.json +11 -0
  127. package/dist/kits/blocks/tsconfig.tsbuildinfo +1 -0
  128. package/dist/utils/file-operations.d.ts +3 -1
  129. package/dist/utils/file-operations.d.ts.map +1 -1
  130. package/dist/utils/file-operations.js +84 -12
  131. package/dist/utils/file-operations.js.map +1 -1
  132. package/dist/utils/installation-tracker.d.ts +2 -2
  133. package/dist/utils/installation-tracker.d.ts.map +1 -1
  134. package/dist/utils/installation-tracker.js +11 -11
  135. package/dist/utils/installation-tracker.js.map +1 -1
  136. package/dist/utils/package-manager.d.ts +6 -0
  137. package/dist/utils/package-manager.d.ts.map +1 -0
  138. package/dist/utils/package-manager.js +58 -0
  139. package/dist/utils/package-manager.js.map +1 -0
  140. package/dist/utils/yarn-pnp.d.ts +6 -0
  141. package/dist/utils/yarn-pnp.d.ts.map +1 -0
  142. package/dist/utils/yarn-pnp.js +39 -0
  143. package/dist/utils/yarn-pnp.js.map +1 -0
  144. package/package.json +5 -2
  145. package/dist/kits/blocks/notes/THEME_GUIDE.md +0 -29
@@ -1,80 +1,80 @@
1
- import React from "react";
2
- import { cn } from "@/lib/utils";
3
-
4
- type Props = React.PropsWithChildren<{ className?: string }>;
5
-
6
- /**
7
- * DigitalAgency template theme variables wrapper.
8
- * Emerald-leaning palette; adjust to match your preset exactly.
9
- */
10
- export function PresetThemeVars({ className, children }: Props) {
11
- return (
12
- <div
13
- className={cn(
14
- // Shared button ring
15
- "[--btn-ring:theme(colors.emerald.500)] dark:[--btn-ring:theme(colors.emerald.400)]",
16
-
17
- // Inputs
18
- "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
19
- "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
20
- "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
21
- "[--input-border:theme(colors.emerald.200)] dark:[--input-border:theme(colors.emerald.700)]",
22
- "[--input-focus-ring:theme(colors.emerald.500)] dark:[--input-focus-ring:theme(colors.emerald.400)]",
23
- "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
24
-
25
- // Cards
26
- "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
27
- "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
28
- "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
29
- "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
30
- "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
31
- "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
32
-
33
- // Badges/Chips
34
- "[--badge-bg:theme(colors.emerald.50)] dark:[--badge-bg:theme(colors.emerald.950)]",
35
- "[--badge-fg:theme(colors.emerald.700)] dark:[--badge-fg:theme(colors.emerald.300)]",
36
- "[--badge-border:theme(colors.emerald.200)] dark:[--badge-border:theme(colors.emerald.800)]",
37
- "[--badge-active-bg:theme(colors.emerald.600)] dark:[--badge-active-bg:theme(colors.emerald.500)]",
38
- "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
39
- "[--badge-active-border:theme(colors.emerald.700)] dark:[--badge-active-border:theme(colors.emerald.400)]",
40
-
41
- // Headings/Subheadings
42
- "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
43
- "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
44
- "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
45
-
46
- // Process timeline
47
- "[--process-step-bg:theme(colors.fuchsia.600)] dark:[--process-step-bg:theme(colors.fuchsia.500)]",
48
- "[--process-step-fg:theme(colors.white)] dark:[--process-step-fg:theme(colors.white)]",
49
- "[--process-connector:theme(colors.gray.300)] dark:[--process-connector:theme(colors.gray.600)]",
50
-
51
- // Portfolio metrics color
52
- "[--metric-fg:theme(colors.fuchsia.600)] dark:[--metric-fg:theme(colors.fuchsia.400)]",
53
-
54
- // Footer
55
- "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
56
- "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
57
- "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
58
- "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
59
- "[--footer-link-hover-fg:theme(colors.emerald.700)] dark:[--footer-link-hover-fg:theme(colors.emerald.400)]",
60
- "[--footer-link-hover-bg:theme(colors.emerald.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_152)_20%,transparent)]",
61
- "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
62
- "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
63
-
64
- // Table (optional)
65
- "[--table-fg:inherit]",
66
- "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
67
- "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
68
- "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
69
- "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
70
-
71
- // About section accent
72
- "[--about-accent:theme(colors.fuchsia.600)] dark:[--about-accent:theme(colors.fuchsia.400)]",
73
-
74
- className,
75
- )}
76
- >
77
- {children}
78
- </div>
79
- );
80
- }
1
+ import React from "react";
2
+ import { cn } from "@/lib/utils";
3
+
4
+ type Props = React.PropsWithChildren<{ className?: string }>;
5
+
6
+ /**
7
+ * DigitalAgency template theme variables wrapper.
8
+ * Emerald-leaning palette; adjust to match your preset exactly.
9
+ */
10
+ export function PresetThemeVars({ className, children }: Props) {
11
+ return (
12
+ <div
13
+ className={cn(
14
+ // Shared button ring
15
+ "[--btn-ring:theme(colors.emerald.500)] dark:[--btn-ring:theme(colors.emerald.400)]",
16
+
17
+ // Inputs
18
+ "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
19
+ "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
20
+ "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
21
+ "[--input-border:theme(colors.emerald.200)] dark:[--input-border:theme(colors.emerald.700)]",
22
+ "[--input-focus-ring:theme(colors.emerald.500)] dark:[--input-focus-ring:theme(colors.emerald.400)]",
23
+ "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
24
+
25
+ // Cards
26
+ "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
27
+ "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
28
+ "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
29
+ "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
30
+ "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
31
+ "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
32
+
33
+ // Badges/Chips
34
+ "[--badge-bg:theme(colors.emerald.50)] dark:[--badge-bg:theme(colors.emerald.950)]",
35
+ "[--badge-fg:theme(colors.emerald.700)] dark:[--badge-fg:theme(colors.emerald.300)]",
36
+ "[--badge-border:theme(colors.emerald.200)] dark:[--badge-border:theme(colors.emerald.800)]",
37
+ "[--badge-active-bg:theme(colors.emerald.600)] dark:[--badge-active-bg:theme(colors.emerald.500)]",
38
+ "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
39
+ "[--badge-active-border:theme(colors.emerald.700)] dark:[--badge-active-border:theme(colors.emerald.400)]",
40
+
41
+ // Headings/Subheadings
42
+ "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
43
+ "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
44
+ "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
45
+
46
+ // Process timeline
47
+ "[--process-step-bg:theme(colors.fuchsia.600)] dark:[--process-step-bg:theme(colors.fuchsia.500)]",
48
+ "[--process-step-fg:theme(colors.white)] dark:[--process-step-fg:theme(colors.white)]",
49
+ "[--process-connector:theme(colors.gray.300)] dark:[--process-connector:theme(colors.gray.600)]",
50
+
51
+ // Portfolio metrics color
52
+ "[--metric-fg:theme(colors.fuchsia.600)] dark:[--metric-fg:theme(colors.fuchsia.400)]",
53
+
54
+ // Footer
55
+ "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
56
+ "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
57
+ "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
58
+ "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
59
+ "[--footer-link-hover-fg:theme(colors.emerald.700)] dark:[--footer-link-hover-fg:theme(colors.emerald.400)]",
60
+ "[--footer-link-hover-bg:theme(colors.emerald.50)] dark:[--footer-link-hover-bg:color-mix(in_oklab,oklch(0.17_0.05_152)_20%,transparent)]",
61
+ "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
62
+ "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
63
+
64
+ // Table (optional)
65
+ "[--table-fg:inherit]",
66
+ "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
67
+ "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
68
+ "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
69
+ "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
70
+
71
+ // About section accent
72
+ "[--about-accent:theme(colors.fuchsia.600)] dark:[--about-accent:theme(colors.fuchsia.400)]",
73
+
74
+ className,
75
+ )}
76
+ >
77
+ {children}
78
+ </div>
79
+ );
80
+ }
@@ -1,36 +1,42 @@
1
- # DigitalAgency Template Theming
2
-
3
- This template is preset-first. It’s wrapped with `PresetThemeVars` to set a template-wide emerald palette. Shared components read variables with safe token fallbacks. Use local overrides sparingly (e.g., a specific CTA state).
4
-
5
- ## Where it’s wired
6
-
7
- - Wrapper: `components/templates/digitalagency/PresetThemeVars.tsx`
8
- - Page: `app/templates/digitalagency/page.tsx`
9
-
10
- ## Core variables
11
-
12
- - Buttons: `--btn-bg`, `--btn-fg`, `--btn-hover-bg`, `--btn-hover-fg`, `--btn-border`, `--btn-ring`
13
- - Inputs/Textareas: `--input-bg`, `--input-fg`, `--input-placeholder`, `--input-border`, `--input-focus-ring`, `--input-ring-offset`
14
- - Cards: `--card-bg`, `--card-fg`, `--card-title-fg`, `--card-muted-fg`, `--card-border`, `--card-shadow`
15
- - Badges/Chips: `--badge-bg`, `--badge-fg`, `--badge-border`, plus active variants
16
- - Headings: `--heading-fg`, `--subheading-fg`, `--description-fg`
17
- - Footer: `--footer-bg`, `--footer-fg`, `--footer-heading-fg`, `--footer-link-fg`, `--footer-link-hover-fg`, `--footer-link-hover-bg`, `--footer-muted-fg`, `--footer-border`
18
- - Table: `--table-fg`, `--table-muted-fg`, `--table-head-fg`, `--table-border`, `--table-row-hover-bg`
19
-
20
- ## Per-section overrides
21
-
22
- This template should be styled primarily by PresetThemeVars. Override on a specific section only when needed:
23
-
24
- ```tsx
25
- <section className="[--btn-ring:theme(colors.emerald.600)]">
26
- <CTA />
27
- </section>
28
- ```
29
-
30
- ## Outline buttons
31
-
32
- Always set `--btn-bg:transparent` and keep a border width class present when overriding outline colors.
33
-
34
- ## Should preset components be refactored?
35
-
36
- Not mandatory. As you touch presets, prefer removing hard-coded color classes and let the var contract style them. Keep structure (spacing, layout, motion) classes.
1
+ # DigitalAgency Template Theming
2
+
3
+ This template is preset-first. It’s wrapped with `PresetThemeVars` to set a template-wide emerald palette. Shared components read variables with safe token fallbacks. Use local overrides sparingly (e.g., a specific CTA state).
4
+
5
+ ## Where it’s wired
6
+
7
+ Template paths depend on your router:
8
+
9
+ - App Router:
10
+ - Wrapper: `app/templates/digitalagency/PresetThemeVars.tsx`
11
+ - Page: `app/templates/digitalagency/page.tsx`
12
+ - Pages Router:
13
+ - Wrapper: `components/templates/digitalagency/PresetThemeVars.tsx`
14
+ - Page: `pages/templates/digitalagency/index.tsx`
15
+
16
+ ## Core variables
17
+
18
+ - Buttons: `--btn-bg`, `--btn-fg`, `--btn-hover-bg`, `--btn-hover-fg`, `--btn-border`, `--btn-ring`
19
+ - Inputs/Textareas: `--input-bg`, `--input-fg`, `--input-placeholder`, `--input-border`, `--input-focus-ring`, `--input-ring-offset`
20
+ - Cards: `--card-bg`, `--card-fg`, `--card-title-fg`, `--card-muted-fg`, `--card-border`, `--card-shadow`
21
+ - Badges/Chips: `--badge-bg`, `--badge-fg`, `--badge-border`, plus active variants
22
+ - Headings: `--heading-fg`, `--subheading-fg`, `--description-fg`
23
+ - Footer: `--footer-bg`, `--footer-fg`, `--footer-heading-fg`, `--footer-link-fg`, `--footer-link-hover-fg`, `--footer-link-hover-bg`, `--footer-muted-fg`, `--footer-border`
24
+ - Table: `--table-fg`, `--table-muted-fg`, `--table-head-fg`, `--table-border`, `--table-row-hover-bg`
25
+
26
+ ## Per-section overrides
27
+
28
+ This template should be styled primarily by PresetThemeVars. Override on a specific section only when needed:
29
+
30
+ ```tsx
31
+ <section className="[--btn-ring:theme(colors.emerald.600)]">
32
+ <CTA />
33
+ </section>
34
+ ```
35
+
36
+ ## Outline buttons
37
+
38
+ Always set `--btn-bg:transparent` and keep a border width class present when overriding outline colors.
39
+
40
+ ## Should preset components be refactored?
41
+
42
+ Not mandatory. As you touch presets, prefer removing hard-coded color classes and let the var contract style them. Keep structure (spacing, layout, motion) classes.
@@ -1,99 +1,71 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { About as SharedAbout } from "@/components/sections/About";
5
-
6
- export function About() {
7
- return (
8
- <SharedAbout
9
- // Content
10
- aboutSubheadingText="About Us"
11
- aboutHeadingText="Your Success Is Our Mission"
12
- 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."
13
- aboutTextAlign="center"
14
- // Stats
15
- showStats={true}
16
- animateStats={true}
17
- aboutStats={[
18
- { value: "2.5", suffix: "k+", label: "Leads Generated" },
19
- { value: "4.8", suffix: "%", label: "Avg. CTR" },
20
- { value: "92", suffix: "%", label: "Client Retention" },
21
- { value: "12", suffix: "M", label: "Ad Spend Managed" },
22
- ]}
23
- // Slots / styling
24
- section={{
25
- className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
26
- }}
27
- container={{
28
- className: "max-w-7xl mx-auto px-6",
29
- }}
30
- inner={{
31
- className: "flex flex-col gap-12",
32
- }}
33
- contentContainer={{
34
- className: "max-w-4xl mx-auto",
35
- }}
36
- contentStack={{
37
- className: "flex flex-col gap-6",
38
- }}
39
- subheading={{
40
- className:
41
- "text-sm font-semibold font-poppins uppercase tracking-wider text-[var(--about-accent)]",
42
- }}
43
- heading={{
44
- className:
45
- "text-4xl md:text-5xl lg:text-6xl font-bold leading-tight text-[var(--heading-fg)]",
46
- }}
47
- content={{
48
- className:
49
- "text-xl md:text-2xl max-w-3xl mx-auto leading-relaxed text-[var(--subheading-fg)]",
50
- }}
51
- statsSection={{
52
- className:
53
- "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)]",
54
- }}
55
- statsGrid={{
56
- className: "grid grid-cols-2 md:grid-cols-4 gap-8 justify-items-center",
57
- }}
58
- statItem={{
59
- className: "flex flex-col items-center gap-2",
60
- }}
61
- statNumber={{
62
- className:
63
- "text-4xl md:text-5xl font-bold font-poppins leading-none text-[var(--about-accent)]",
64
- }}
65
- statLabel={{
66
- className:
67
- "text-sm font-medium font-inter text-center text-[var(--card-muted-fg)]",
68
- }}
69
- />
70
- );
71
- }
72
-
73
- // "use client";
74
-
75
- // import React from "react";
76
- // import { About as SharedAbout } from "@/components/sections/About";
77
-
78
- // export function About() {
79
- // return (
80
- // <SharedAbout
81
- // aboutHeadingText="Your Success Is Our Mission"
82
- // 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."
83
- // aboutTextAlign="center"
84
- // showStats={true}
85
- // section={{
86
- // className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
87
- // }}
88
- // heading={{
89
- // className: "text-4xl md:text-5xl lg:text-6xl font-bold text-foreground",
90
- // }}
91
- // content={{
92
- // className:
93
- // "text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto leading-relaxed",
94
- // }}
95
- // />
96
- // );
97
- // }
98
-
99
- // export default About;
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import { About as SharedAbout } from "@/components/sections/About";
5
+
6
+ export function About() {
7
+ return (
8
+ <SharedAbout
9
+ // Content
10
+ aboutSubheadingText="About Us"
11
+ aboutHeadingText="Your Success Is Our Mission"
12
+ 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."
13
+ aboutTextAlign="center"
14
+ // Stats
15
+ showStats={true}
16
+ animateStats={true}
17
+ aboutStats={[
18
+ { value: "2.5", suffix: "k+", label: "Leads Generated" },
19
+ { value: "4.8", suffix: "%", label: "Avg. CTR" },
20
+ { value: "92", suffix: "%", label: "Client Retention" },
21
+ { value: "12", suffix: "M", label: "Ad Spend Managed" },
22
+ ]}
23
+ // Slots / styling
24
+ section={{
25
+ className: "py-16 md:py-20 lg:py-24 bg-white dark:bg-gray-800",
26
+ }}
27
+ container={{
28
+ className: "max-w-7xl mx-auto px-6",
29
+ }}
30
+ inner={{
31
+ className: "flex flex-col gap-12",
32
+ }}
33
+ contentContainer={{
34
+ className: "max-w-4xl mx-auto",
35
+ }}
36
+ contentStack={{
37
+ className: "flex flex-col gap-6",
38
+ }}
39
+ subheading={{
40
+ className:
41
+ "text-sm font-semibold font-poppins uppercase tracking-wider text-[var(--about-accent)]",
42
+ }}
43
+ heading={{
44
+ className:
45
+ "text-4xl md:text-5xl lg:text-6xl font-bold leading-tight text-[var(--heading-fg)]",
46
+ }}
47
+ content={{
48
+ className:
49
+ "text-xl md:text-2xl max-w-3xl mx-auto leading-relaxed text-[var(--subheading-fg)]",
50
+ }}
51
+ statsSection={{
52
+ className:
53
+ "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)]",
54
+ }}
55
+ statsGrid={{
56
+ className: "grid grid-cols-2 md:grid-cols-4 gap-8 justify-items-center",
57
+ }}
58
+ statItem={{
59
+ className: "flex flex-col items-center gap-2",
60
+ }}
61
+ statNumber={{
62
+ className:
63
+ "text-4xl md:text-5xl font-bold font-poppins leading-none text-[var(--about-accent)]",
64
+ }}
65
+ statLabel={{
66
+ className:
67
+ "text-sm font-medium font-inter text-center text-[var(--card-muted-fg)]",
68
+ }}
69
+ />
70
+ );
71
+ }
@@ -1,74 +1,40 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { CTA as SharedCTA } from "@/components/sections/CTA";
5
-
6
- export function CTA() {
7
- return (
8
- <SharedCTA
9
- // Background colors moved to the section slot
10
- section={{
11
- className:
12
- "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)]",
13
- }}
14
- // Layout/height/centering handled by the container slot
15
- container={{
16
- className:
17
- "mx-auto flex h-[32vh] w-full max-w-6xl flex-col items-center justify-center overflow-hidden px-4 pb-8",
18
- }}
19
- // Heading mapped to the new headingText slot
20
- headingText={{
21
- text: "Ready To Transform Your Business?",
22
- className:
23
- "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
24
- }}
25
- // Use actionsWrapper for spacing instead of margin on the button
26
- actionsWrapper={{
27
- className:
28
- "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)]",
29
- }}
30
- // Primary CTA mapped to ctaButton + ctaButtonStyle
31
- ctaButton={{ label: "Get Your Free Quote", href: "#contact" }}
32
- ctaButtonStyle={{
33
- variant: "default",
34
- size: "lg",
35
- className:
36
- "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]",
37
- }}
38
- // Preserve the previous top margin on the heading
39
- spacing={{ topMargin: "mt-[8vh]" }}
40
- />
41
- );
42
- }
43
-
44
- // "use client";
45
-
46
- // import React from "react";
47
- // import { CTA as SharedCTA } from "@/components/sections/CTA";
48
-
49
- // export function CTA() {
50
- // return (
51
- // <SharedCTA
52
- // heading={{
53
- // text: "Ready To Transform Your Business?",
54
- // className:
55
- // "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
56
- // }}
57
- // section={{
58
- // className:
59
- // "flex h-[32vh] flex-col items-center overflow-hidden bg-fuchsia-50 dark:bg-gray-900",
60
- // }}
61
- // button={{
62
- // text: "Get Your Free Quote",
63
- // href: "#contact",
64
- // variant: "default",
65
- // size: "lg",
66
- // className:
67
- // "mt-6 bg-fuchsia-600 hover:bg-fuchsia-700 text-white font-poppins shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
68
- // }}
69
- // spacing={{ topMargin: "mt-[8vh]" }}
70
- // />
71
- // );
72
- // }
73
-
74
- // export default CTA;
1
+ "use client";
2
+
3
+ import React from "react";
4
+ import { CTA as SharedCTA } from "@/components/sections/CTA";
5
+
6
+ export function CTA() {
7
+ return (
8
+ <SharedCTA
9
+ // Background colors
10
+ section={{
11
+ className:
12
+ "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)]",
13
+ }}
14
+ // Layout/height/centering handled by the container slot
15
+ container={{
16
+ className:
17
+ "mx-auto flex h-[32vh] w-full max-w-6xl flex-col items-center justify-center overflow-hidden px-4 pb-8",
18
+ }}
19
+ // Heading text
20
+ headingText={{
21
+ text: "Ready To Transform Your Business?",
22
+ className:
23
+ "text-4xl md:text-5xl lg:text-6xl font-bold font-poppins leading-tight",
24
+ }}
25
+ // Use actionsWrapper for spacing instead of margin on the button
26
+ actionsWrapper={{
27
+ className:
28
+ "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)]",
29
+ }}
30
+ ctaButton={{ label: "Get Your Free Quote", href: "#contact" }}
31
+ ctaButtonStyle={{
32
+ variant: "default",
33
+ size: "lg",
34
+ className:
35
+ "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]",
36
+ }}
37
+ spacing={{ topMargin: "mt-[8vh]" }}
38
+ />
39
+ );
40
+ }