nextworks 0.2.0-alpha.2 → 0.2.0-alpha.21

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,74 +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
- *
9
- * Sets a small CSS variable contract consumed by shared components
10
- * (Buttons, Inputs, Cards, Badges, Footer, Table, etc.).
11
- *
12
- * You can override any variable per-section by re-declaring it on
13
- * that section/container.
14
- */
15
- export function PresetThemeVars({ className, children }: Props) {
16
- return (
17
- <div
18
- className={cn(
19
- // Button ring shared across template
20
- "[--btn-ring:theme(colors.purple.500)] dark:[--btn-ring:theme(colors.purple.400)]",
21
-
22
- // Inputs (Contact)
23
- "[--input-bg:theme(colors.white)] dark:[--input-bg:theme(colors.gray.900)]",
24
- "[--input-fg:theme(colors.gray.900)] dark:[--input-fg:theme(colors.gray.100)]",
25
- "[--input-placeholder:theme(colors.gray.400)] dark:[--input-placeholder:theme(colors.gray.500)]",
26
- "[--input-border:theme(colors.purple.200)] dark:[--input-border:theme(colors.purple.700)]",
27
- "[--input-focus-ring:theme(colors.purple.500)] dark:[--input-focus-ring:theme(colors.purple.400)]",
28
- "[--input-ring-offset:theme(colors.white)] dark:[--input-ring-offset:theme(colors.gray.900)]",
29
-
30
- // Cards (Features, ServicesGrid, Pricing, Testimonials, etc.)
31
- "[--card-bg:theme(colors.white)] dark:[--card-bg:theme(colors.gray.900)]",
32
- "[--card-fg:theme(colors.gray.900)] dark:[--card-fg:theme(colors.gray.100)]",
33
- "[--card-title-fg:theme(colors.gray.900)] dark:[--card-title-fg:theme(colors.gray.100)]",
34
- "[--card-muted-fg:theme(colors.gray.500)] dark:[--card-muted-fg:theme(colors.gray.400)]",
35
- "[--card-border:theme(colors.gray.200)] dark:[--card-border:theme(colors.gray.800)]",
36
- "[--card-shadow:0_6px_20px_rgba(0,0,0,0.06)]",
37
-
38
- // Badges/Chips (Portfolio filters/tags, Pricing badge, Testimonials avatar)
39
- "[--badge-bg:theme(colors.purple.50)] dark:[--badge-bg:theme(colors.purple.950)]",
40
- "[--badge-fg:theme(colors.purple.700)] dark:[--badge-fg:theme(colors.purple.300)]",
41
- "[--badge-border:theme(colors.purple.200)] dark:[--badge-border:theme(colors.purple.800)]",
42
- "[--badge-active-bg:theme(colors.purple.600)] dark:[--badge-active-bg:theme(colors.purple.500)]",
43
- "[--badge-active-fg:theme(colors.white)] dark:[--badge-active-fg:theme(colors.white)]",
44
- "[--badge-active-border:theme(colors.purple.700)] dark:[--badge-active-border:theme(colors.purple.400)]",
45
-
46
- // Headings/Subheadings
47
- "[--heading-fg:theme(colors.gray.900)] dark:[--heading-fg:theme(colors.gray.100)]",
48
- "[--subheading-fg:theme(colors.gray.600)] dark:[--subheading-fg:theme(colors.gray.300)]",
49
- "[--description-fg:theme(colors.gray.700)] dark:[--description-fg:theme(colors.gray.200)]",
50
-
51
- // Footer
52
- "[--footer-bg:transparent] dark:[--footer-bg:transparent]",
53
- "[--footer-fg:theme(colors.gray.800)] dark:[--footer-fg:theme(colors.gray.100)]",
54
- "[--footer-heading-fg:theme(colors.gray.900)] dark:[--footer-heading-fg:theme(colors.gray.100)]",
55
- "[--footer-link-fg:theme(colors.gray.700)] dark:[--footer-link-fg:theme(colors.gray.300)]",
56
- "[--footer-link-hover-fg:theme(colors.purple.700)] dark:[--footer-link-hover-fg:theme(colors.purple.400)]",
57
- "[--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)]",
58
- "[--footer-muted-fg:theme(colors.gray.500)] dark:[--footer-muted-fg:theme(colors.gray.400)]",
59
- "[--footer-border:theme(colors.gray.200)] dark:[--footer-border:theme(colors.gray.800)]",
60
-
61
- // Table (optional)
62
- "[--table-fg:inherit]",
63
- "[--table-muted-fg:theme(colors.gray.500)] dark:[--table-muted-fg:theme(colors.gray.400)]",
64
- "[--table-head-fg:theme(colors.gray.700)] dark:[--table-head-fg:theme(colors.gray.300)]",
65
- "[--table-border:theme(colors.gray.200)] dark:[--table-border:theme(colors.gray.800)]",
66
- "[--table-row-hover-bg:theme(colors.gray.50)] dark:[--table-row-hover-bg:theme(colors.gray.900)]",
67
-
68
- className,
69
- )}
70
- >
71
- {children}
72
- </div>
73
- );
74
- }
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,55 +1,62 @@
1
- # ProductLaunch Template Theming
2
-
3
- This template intentionally does NOT wrap the page with PresetThemeVars. It serves as the component-level styling example where individual preset components set CSS variables locally on their slots (buttons, cards, inputs, etc.).
4
-
5
- Shared components read these variables with token fallbacks, so if a var is not set, design tokens still apply safely.
6
-
7
- ## Where to look
8
-
9
- - Page: `app/templates/productlaunch/page.tsx` (PresetThemeVars is commented out)
10
- - Components: `app/templates/productlaunch/components/*` (slots use Tailwind arbitrary properties like `[--btn-bg:...]` to set vars locally)
11
-
12
- ## Core variables
13
-
14
- - Buttons: `--btn-bg`, `--btn-fg`, `--btn-hover-bg`, `--btn-hover-fg`, `--btn-border`, `--btn-ring`
15
- - Inputs/Textareas: `--input-bg`, `--input-fg`, `--input-placeholder`, `--input-border`, `--input-focus-ring`, `--input-ring-offset`
16
- - Cards: `--card-bg`, `--card-fg`, `--card-title-fg`, `--card-muted-fg`, `--card-border`, `--card-shadow`
17
- - Badges/Chips: `--badge-bg`, `--badge-fg`, `--badge-border`, plus active: `--badge-active-bg`, `--badge-active-fg`, `--badge-active-border`
18
- - Headings: `--heading-fg`, `--subheading-fg`, `--description-fg`
19
- - Footer: `--footer-bg`, `--footer-fg`, `--footer-heading-fg`, `--footer-link-fg`, `--footer-link-hover-fg`, `--footer-link-hover-bg`, `--footer-muted-fg`, `--footer-border`
20
- - Table: `--table-fg`, `--table-muted-fg`, `--table-head-fg`, `--table-border`, `--table-row-hover-bg`
21
-
22
- ## Per-section overrides (examples)
23
-
24
- Because this template is component-first, most styling is set directly in the component props. You can still scope vars on a section wrapper when it’s convenient:
25
-
26
- ```tsx
27
- <section className="[--btn-ring:theme(colors.purple.600)] dark:[--btn-ring:theme(colors.purple.500)]">
28
- <CTA />
29
- </section>
30
- ```
31
-
32
- Contact input borders example:
33
-
34
- ```tsx
35
- <section className="[--input-border:theme(colors.purple.200)] dark:[--input-border:theme(colors.purple.700)]">
36
- <Contact />
37
- </section>
38
- ```
39
-
40
- ## Outline buttons
41
-
42
- When styling outline buttons, set `--btn-bg:transparent` and keep a border width class (e.g., `border` or `border-2`).
43
-
44
- ```tsx
45
- <Button
46
- variant="outline"
47
- className="border [--btn-bg:transparent] [--btn-border:theme(colors.purple.600)] [--btn-fg:theme(colors.purple.600)] hover:[--btn-hover-bg:theme(colors.purple.50)] hover:[--btn-hover-fg:theme(colors.purple.600)]"
48
- >
49
- Outline
50
- </Button>
51
- ```
52
-
53
- ## Do I need to refactor preset components?
54
-
55
- Not required. This template is intentionally left as an example of component-level styling. Over time, you can still deduplicate color classes by relying on the shared var contract while keeping structure/spacing classes.
1
+ # ProductLaunch Template Theming
2
+
3
+ This template intentionally does NOT wrap the page with PresetThemeVars. It serves as the component-level styling example where individual preset components set CSS variables locally on their slots (buttons, cards, inputs, etc.).
4
+
5
+ Shared components read these variables with token fallbacks, so if a var is not set, design tokens still apply safely.
6
+
7
+ ## Where to look
8
+
9
+ Template paths depend on your router:
10
+
11
+ - App Router:
12
+ - Page: `app/templates/productlaunch/page.tsx` (PresetThemeVars is commented out)
13
+ - Components: `app/templates/productlaunch/components/*` (slots use Tailwind arbitrary properties like `[--btn-bg:...]` to set vars locally)
14
+
15
+ - Pages Router:
16
+ - Page: `pages/templates/productlaunch/index.tsx` (PresetThemeVars is commented out)
17
+ - Components: `components/templates/productlaunch/components/*`
18
+
19
+ ## Core variables
20
+
21
+ - Buttons: `--btn-bg`, `--btn-fg`, `--btn-hover-bg`, `--btn-hover-fg`, `--btn-border`, `--btn-ring`
22
+ - Inputs/Textareas: `--input-bg`, `--input-fg`, `--input-placeholder`, `--input-border`, `--input-focus-ring`, `--input-ring-offset`
23
+ - Cards: `--card-bg`, `--card-fg`, `--card-title-fg`, `--card-muted-fg`, `--card-border`, `--card-shadow`
24
+ - Badges/Chips: `--badge-bg`, `--badge-fg`, `--badge-border`, plus active: `--badge-active-bg`, `--badge-active-fg`, `--badge-active-border`
25
+ - Headings: `--heading-fg`, `--subheading-fg`, `--description-fg`
26
+ - Footer: `--footer-bg`, `--footer-fg`, `--footer-heading-fg`, `--footer-link-fg`, `--footer-link-hover-fg`, `--footer-link-hover-bg`, `--footer-muted-fg`, `--footer-border`
27
+ - Table: `--table-fg`, `--table-muted-fg`, `--table-head-fg`, `--table-border`, `--table-row-hover-bg`
28
+
29
+ ## Per-section overrides (examples)
30
+
31
+ Because this template is component-first, most styling is set directly in the component props. You can still scope vars on a section wrapper when it’s convenient:
32
+
33
+ ```tsx
34
+ <section className="[--btn-ring:theme(colors.purple.600)] dark:[--btn-ring:theme(colors.purple.500)]">
35
+ <CTA />
36
+ </section>
37
+ ```
38
+
39
+ Contact input borders example:
40
+
41
+ ```tsx
42
+ <section className="[--input-border:theme(colors.purple.200)] dark:[--input-border:theme(colors.purple.700)]">
43
+ <Contact />
44
+ </section>
45
+ ```
46
+
47
+ ## Outline buttons
48
+
49
+ When styling outline buttons, set `--btn-bg:transparent` and keep a border width class (e.g., `border` or `border-2`).
50
+
51
+ ```tsx
52
+ <Button
53
+ variant="outline"
54
+ className="border [--btn-bg:transparent] [--btn-border:theme(colors.purple.600)] [--btn-fg:theme(colors.purple.600)] hover:[--btn-hover-bg:theme(colors.purple.50)] hover:[--btn-hover-fg:theme(colors.purple.600)]"
55
+ >
56
+ Outline
57
+ </Button>
58
+ ```
59
+
60
+ ## Do I need to refactor preset components?
61
+
62
+ Not required. This template is intentionally left as an example of component-level styling. Over time, you can still deduplicate color classes by relying on the shared var contract while keeping structure/spacing classes.
@@ -1,178 +1,84 @@
1
- "use client";
2
- import React from "react";
3
- import { About as SharedAbout } from "@/components/sections/About";
4
-
5
- /**
6
- * A preset About component customized for the product launch page,
7
- * using the shared About.tsx with predefined styles and content.
8
- *
9
- * Features:
10
- * - "About IntelliOpAI" heading with custom typography
11
- * - Purple-themed styling matching the brand
12
- * - Custom stats optimized for AI product launch
13
- * - Responsive design with proper spacing
14
- * - Dark mode support with consistent theming
15
- * - Clean, modern design with hover effects
16
- */
17
-
18
- export function About() {
19
- return (
20
- <SharedAbout
21
- // Content
22
- aboutSubheadingText="The Future of AI is Here"
23
- aboutHeadingText="About IntelliOpAI"
24
- aboutContentText="IntelliOpAI is pioneering the next generation of artificial intelligence solutions for modern businesses. Founded by AI researchers and industry disruptors, we're building intelligent systems that learn, adapt, and deliver results in real-time. Our breakthrough technology combines deep learning, natural language processing, and predictive analytics to create AI that actually works for your business."
25
- aboutTextAlign="center"
26
- // Stats
27
- showStats={true}
28
- animateStats={true}
29
- aboutStats={[
30
- { value: "10M", suffix: "+", label: "Data Points Processed" },
31
- { value: "99.7", suffix: "%", label: "AI Accuracy Rate" },
32
- { value: "500", suffix: "+", label: "Early Adopters" },
33
- { value: "24", suffix: "/7", label: "AI Innovation" },
34
- ]}
35
- // Slots / styling
36
- section={{
37
- className: "py-20 bg-white dark:bg-black text-gray-800 dark:text-white",
38
- }}
39
- container={{
40
- className: "max-w-7xl mx-auto px-6",
41
- }}
42
- inner={{
43
- // New slot styled for this preset
44
- className: "flex flex-col gap-12",
45
- }}
46
- contentContainer={{
47
- className: "max-w-4xl mx-auto",
48
- }}
49
- contentStack={{
50
- // New slot styled for this preset
51
- className: "flex flex-col gap-6",
52
- }}
53
- subheading={{
54
- className:
55
- "text-sm font-semibold text-purple-600 dark:text-purple-400 uppercase tracking-wider font-inter",
56
- }}
57
- heading={{
58
- className:
59
- "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white leading-tight font-outfit",
60
- }}
61
- content={{
62
- className:
63
- "text-base md:text-lg text-gray-700 dark:text-gray-200 leading-relaxed opacity-90 max-w-3xl font-inter",
64
- }}
65
- statsSection={{
66
- className:
67
- "bg-gradient-to-r from-purple-50 via-white to-purple-50 dark:from-purple-900/20 dark:via-gray-800 dark:to-purple-900/20 p-8 md:p-12 rounded-2xl shadow-xl mx-auto max-w-5xl w-full border border-purple-200 dark:border-purple-800",
68
- }}
69
- statsGrid={{
70
- className:
71
- "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12 justify-items-center",
72
- }}
73
- statItem={{
74
- className: "flex flex-col items-center gap-3",
75
- }}
76
- statNumber={{
77
- className:
78
- "text-2xl md:text-3xl lg:text-4xl font-bold text-purple-600 dark:text-purple-400 leading-none font-outfit",
79
- }}
80
- statLabel={{
81
- className:
82
- "text-sm md:text-base font-medium text-gray-700 dark:text-gray-300 text-center opacity-90 font-inter",
83
- }}
84
- />
85
- );
86
- }
87
-
88
- // "use client";
89
-
90
- // import { About as SharedAbout } from "@/components/sections/About";
91
-
92
- // /**
93
- // * A preset About component customized for the product launch page,
94
- // * using the shared About.tsx with predefined styles and content.
95
- // *
96
- // * Features:
97
- // * - "About IntelliOpAI" heading with custom typography
98
- // * - Purple-themed styling matching the brand
99
- // * - Custom stats optimized for AI product launch
100
- // * - Responsive design with proper spacing
101
- // * - Dark mode support with consistent theming
102
- // * - Clean, modern design with hover effects
103
- // */
104
- // export function About() {
105
- // return (
106
- // <SharedAbout
107
- // aboutHeadingText="About IntelliOpAI"
108
- // aboutSubheadingText="The Future of AI is Here"
109
- // aboutContentText="IntelliOpAI is pioneering the next generation of artificial intelligence solutions for modern businesses. Founded by AI researchers and industry disruptors, we're building intelligent systems that learn, adapt, and deliver results in real-time. Our breakthrough technology combines deep learning, natural language processing, and predictive analytics to create AI that actually works for your business."
110
- // aboutStats={[
111
- // {
112
- // value: "10M",
113
- // label: "Data Points Processed",
114
- // suffix: "+",
115
- // },
116
- // {
117
- // value: "99.7",
118
- // label: "AI Accuracy Rate",
119
- // suffix: "%",
120
- // },
121
- // {
122
- // value: "500",
123
- // label: "Early Adopters",
124
- // suffix: "+",
125
- // },
126
- // {
127
- // value: "24",
128
- // label: "AI Innovation",
129
- // suffix: "/7",
130
- // },
131
- // ]}
132
- // section={{
133
- // className: "py-20 bg-white dark:bg-black text-gray-800 dark:text-white",
134
- // }}
135
- // container={{
136
- // className: "max-w-7xl mx-auto px-6",
137
- // }}
138
- // contentContainer={{
139
- // className: "max-w-4xl mx-auto",
140
- // }}
141
- // subheading={{
142
- // className:
143
- // "text-sm font-semibold text-purple-600 dark:text-purple-400 uppercase tracking-wider font-inter",
144
- // }}
145
- // heading={{
146
- // className:
147
- // "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white leading-tight font-outfit",
148
- // }}
149
- // content={{
150
- // className:
151
- // "text-base md:text-lg text-gray-700 dark:text-gray-200 leading-relaxed opacity-90 max-w-3xl font-inter",
152
- // }}
153
- // statsSection={{
154
- // className:
155
- // "bg-gradient-to-r from-purple-50 via-white to-purple-50 dark:from-purple-900/20 dark:via-gray-800 dark:to-purple-900/20 p-8 md:p-12 rounded-2xl shadow-xl mx-auto max-w-5xl w-full border border-purple-200 dark:border-purple-800",
156
- // }}
157
- // statsGrid={{
158
- // className:
159
- // "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12 justify-items-center",
160
- // }}
161
- // statItem={{
162
- // className: "flex flex-col items-center gap-3",
163
- // }}
164
- // statNumber={{
165
- // className:
166
- // "text-2xl md:text-3xl lg:text-4xl font-bold text-purple-600 dark:text-purple-400 leading-none font-outfit",
167
- // }}
168
- // statLabel={{
169
- // className:
170
- // "text-sm md:text-base font-medium text-gray-700 dark:text-gray-300 text-center opacity-90 font-inter",
171
- // }}
172
- // aboutTextAlign="center"
173
- // showStats={true}
174
- // animateStats={false}
175
- // ariaLabel="About IntelliOpAI section"
176
- // />
177
- // );
178
- // }
1
+ "use client";
2
+ import React from "react";
3
+ import { About as SharedAbout } from "@/components/sections/About";
4
+
5
+ /**
6
+ * A preset About component customized for the product launch page,
7
+ * using the shared About.tsx with predefined styles and content.
8
+ *
9
+ * Features:
10
+ * - "About IntelliOpAI" heading with custom typography
11
+ * - Purple-themed styling matching the brand
12
+ * - Custom stats optimized for AI product launch
13
+ * - Responsive design with proper spacing
14
+ * - Dark mode support with consistent theming
15
+ * - Clean, modern design with hover effects
16
+ */
17
+
18
+ export function About() {
19
+ return (
20
+ <SharedAbout
21
+ // Content
22
+ aboutSubheadingText="The Future of AI is Here"
23
+ aboutHeadingText="About IntelliOpAI"
24
+ aboutContentText="IntelliOpAI is pioneering the next generation of artificial intelligence solutions for modern businesses. Founded by AI researchers and industry disruptors, we're building intelligent systems that learn, adapt, and deliver results in real-time. Our breakthrough technology combines deep learning, natural language processing, and predictive analytics to create AI that actually works for your business."
25
+ aboutTextAlign="center"
26
+ // Stats
27
+ showStats={true}
28
+ animateStats={true}
29
+ aboutStats={[
30
+ { value: "10M", suffix: "+", label: "Data Points Processed" },
31
+ { value: "99.7", suffix: "%", label: "AI Accuracy Rate" },
32
+ { value: "500", suffix: "+", label: "Early Adopters" },
33
+ { value: "24", suffix: "/7", label: "AI Innovation" },
34
+ ]}
35
+ // Slots / styling
36
+ section={{
37
+ className: "py-20 bg-white dark:bg-black text-gray-800 dark:text-white",
38
+ }}
39
+ container={{
40
+ className: "max-w-7xl mx-auto px-6",
41
+ }}
42
+ inner={{
43
+ className: "flex flex-col gap-12",
44
+ }}
45
+ contentContainer={{
46
+ className: "max-w-4xl mx-auto",
47
+ }}
48
+ contentStack={{
49
+ className: "flex flex-col gap-6",
50
+ }}
51
+ subheading={{
52
+ className:
53
+ "text-sm font-semibold text-purple-600 dark:text-purple-400 uppercase tracking-wider font-inter",
54
+ }}
55
+ heading={{
56
+ className:
57
+ "text-3xl md:text-4xl lg:text-5xl font-bold text-gray-800 dark:text-white leading-tight font-outfit",
58
+ }}
59
+ content={{
60
+ className:
61
+ "text-base md:text-lg text-gray-700 dark:text-gray-200 leading-relaxed opacity-90 max-w-3xl font-inter",
62
+ }}
63
+ statsSection={{
64
+ className:
65
+ "bg-gradient-to-r from-purple-50 via-white to-purple-50 dark:from-purple-900/20 dark:via-gray-800 dark:to-purple-900/20 p-8 md:p-12 rounded-2xl shadow-xl mx-auto max-w-5xl w-full border border-purple-200 dark:border-purple-800",
66
+ }}
67
+ statsGrid={{
68
+ className:
69
+ "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12 justify-items-center",
70
+ }}
71
+ statItem={{
72
+ className: "flex flex-col items-center gap-3",
73
+ }}
74
+ statNumber={{
75
+ className:
76
+ "text-2xl md:text-3xl lg:text-4xl font-bold text-purple-600 dark:text-purple-400 leading-none font-outfit",
77
+ }}
78
+ statLabel={{
79
+ className:
80
+ "text-sm md:text-base font-medium text-gray-700 dark:text-gray-300 text-center opacity-90 font-inter",
81
+ }}
82
+ />
83
+ );
84
+ }