snowbase-templates-installer 1.0.1

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 (181) hide show
  1. package/README.md +70 -0
  2. package/bin/cli.js +140 -0
  3. package/landing-pages/ai-saas-template/.orchids/orchids.json +8 -0
  4. package/landing-pages/ai-saas-template/README.md +36 -0
  5. package/landing-pages/ai-saas-template/bun.lock +2062 -0
  6. package/landing-pages/ai-saas-template/components.json +22 -0
  7. package/landing-pages/ai-saas-template/eslint.config.mjs +33 -0
  8. package/landing-pages/ai-saas-template/next.config.ts +24 -0
  9. package/landing-pages/ai-saas-template/package-lock.json +11708 -0
  10. package/landing-pages/ai-saas-template/package.json +114 -0
  11. package/landing-pages/ai-saas-template/postcss.config.mjs +7 -0
  12. package/landing-pages/ai-saas-template/public/file.svg +1 -0
  13. package/landing-pages/ai-saas-template/public/globe.svg +1 -0
  14. package/landing-pages/ai-saas-template/public/next.svg +1 -0
  15. package/landing-pages/ai-saas-template/public/vercel.svg +1 -0
  16. package/landing-pages/ai-saas-template/public/window.svg +1 -0
  17. package/landing-pages/ai-saas-template/src/app/favicon.ico +0 -0
  18. package/landing-pages/ai-saas-template/src/app/global-error.tsx +5 -0
  19. package/landing-pages/ai-saas-template/src/app/globals.css +172 -0
  20. package/landing-pages/ai-saas-template/src/app/layout.tsx +42 -0
  21. package/landing-pages/ai-saas-template/src/app/page.tsx +23 -0
  22. package/landing-pages/ai-saas-template/src/components/ErrorReporter.tsx +136 -0
  23. package/landing-pages/ai-saas-template/src/components/sections/cta.tsx +62 -0
  24. package/landing-pages/ai-saas-template/src/components/sections/features-grid.tsx +205 -0
  25. package/landing-pages/ai-saas-template/src/components/sections/footer.tsx +111 -0
  26. package/landing-pages/ai-saas-template/src/components/sections/hero.tsx +92 -0
  27. package/landing-pages/ai-saas-template/src/components/sections/logos.tsx +69 -0
  28. package/landing-pages/ai-saas-template/src/components/sections/navbar.tsx +83 -0
  29. package/landing-pages/ai-saas-template/src/components/sections/testimonials-header.tsx +41 -0
  30. package/landing-pages/ai-saas-template/src/components/sections/value-props.tsx +97 -0
  31. package/landing-pages/ai-saas-template/src/components/ui/accordion.tsx +66 -0
  32. package/landing-pages/ai-saas-template/src/components/ui/alert-dialog.tsx +157 -0
  33. package/landing-pages/ai-saas-template/src/components/ui/alert.tsx +66 -0
  34. package/landing-pages/ai-saas-template/src/components/ui/aspect-ratio.tsx +11 -0
  35. package/landing-pages/ai-saas-template/src/components/ui/avatar.tsx +53 -0
  36. package/landing-pages/ai-saas-template/src/components/ui/badge.tsx +46 -0
  37. package/landing-pages/ai-saas-template/src/components/ui/breadcrumb.tsx +109 -0
  38. package/landing-pages/ai-saas-template/src/components/ui/button-group.tsx +83 -0
  39. package/landing-pages/ai-saas-template/src/components/ui/button.tsx +59 -0
  40. package/landing-pages/ai-saas-template/src/components/ui/calendar.tsx +213 -0
  41. package/landing-pages/ai-saas-template/src/components/ui/card.tsx +92 -0
  42. package/landing-pages/ai-saas-template/src/components/ui/carousel.tsx +241 -0
  43. package/landing-pages/ai-saas-template/src/components/ui/chart.tsx +353 -0
  44. package/landing-pages/ai-saas-template/src/components/ui/checkbox.tsx +32 -0
  45. package/landing-pages/ai-saas-template/src/components/ui/collapsible.tsx +33 -0
  46. package/landing-pages/ai-saas-template/src/components/ui/command.tsx +184 -0
  47. package/landing-pages/ai-saas-template/src/components/ui/context-menu.tsx +252 -0
  48. package/landing-pages/ai-saas-template/src/components/ui/dialog.tsx +143 -0
  49. package/landing-pages/ai-saas-template/src/components/ui/drawer.tsx +135 -0
  50. package/landing-pages/ai-saas-template/src/components/ui/dropdown-menu.tsx +257 -0
  51. package/landing-pages/ai-saas-template/src/components/ui/empty.tsx +104 -0
  52. package/landing-pages/ai-saas-template/src/components/ui/field.tsx +248 -0
  53. package/landing-pages/ai-saas-template/src/components/ui/form.tsx +167 -0
  54. package/landing-pages/ai-saas-template/src/components/ui/hover-card.tsx +44 -0
  55. package/landing-pages/ai-saas-template/src/components/ui/input-group.tsx +170 -0
  56. package/landing-pages/ai-saas-template/src/components/ui/input-otp.tsx +77 -0
  57. package/landing-pages/ai-saas-template/src/components/ui/input.tsx +21 -0
  58. package/landing-pages/ai-saas-template/src/components/ui/item.tsx +193 -0
  59. package/landing-pages/ai-saas-template/src/components/ui/kbd.tsx +28 -0
  60. package/landing-pages/ai-saas-template/src/components/ui/label.tsx +24 -0
  61. package/landing-pages/ai-saas-template/src/components/ui/menubar.tsx +276 -0
  62. package/landing-pages/ai-saas-template/src/components/ui/navigation-menu.tsx +168 -0
  63. package/landing-pages/ai-saas-template/src/components/ui/pagination.tsx +127 -0
  64. package/landing-pages/ai-saas-template/src/components/ui/popover.tsx +48 -0
  65. package/landing-pages/ai-saas-template/src/components/ui/progress.tsx +31 -0
  66. package/landing-pages/ai-saas-template/src/components/ui/radio-group.tsx +45 -0
  67. package/landing-pages/ai-saas-template/src/components/ui/resizable.tsx +56 -0
  68. package/landing-pages/ai-saas-template/src/components/ui/scroll-area.tsx +58 -0
  69. package/landing-pages/ai-saas-template/src/components/ui/select.tsx +185 -0
  70. package/landing-pages/ai-saas-template/src/components/ui/separator.tsx +28 -0
  71. package/landing-pages/ai-saas-template/src/components/ui/sheet.tsx +139 -0
  72. package/landing-pages/ai-saas-template/src/components/ui/sidebar.tsx +726 -0
  73. package/landing-pages/ai-saas-template/src/components/ui/skeleton.tsx +13 -0
  74. package/landing-pages/ai-saas-template/src/components/ui/slider.tsx +63 -0
  75. package/landing-pages/ai-saas-template/src/components/ui/sonner.tsx +25 -0
  76. package/landing-pages/ai-saas-template/src/components/ui/spinner.tsx +16 -0
  77. package/landing-pages/ai-saas-template/src/components/ui/switch.tsx +31 -0
  78. package/landing-pages/ai-saas-template/src/components/ui/table.tsx +116 -0
  79. package/landing-pages/ai-saas-template/src/components/ui/tabs.tsx +66 -0
  80. package/landing-pages/ai-saas-template/src/components/ui/textarea.tsx +18 -0
  81. package/landing-pages/ai-saas-template/src/components/ui/toggle-group.tsx +73 -0
  82. package/landing-pages/ai-saas-template/src/components/ui/toggle.tsx +47 -0
  83. package/landing-pages/ai-saas-template/src/components/ui/tooltip.tsx +61 -0
  84. package/landing-pages/ai-saas-template/src/hooks/use-mobile.ts +19 -0
  85. package/landing-pages/ai-saas-template/src/lib/hooks/use-mobile.tsx +21 -0
  86. package/landing-pages/ai-saas-template/src/lib/utils.ts +6 -0
  87. package/landing-pages/ai-saas-template/src/visual-edits/VisualEditsMessenger.tsx +2159 -0
  88. package/landing-pages/ai-saas-template/src/visual-edits/component-tagger-loader.js +460 -0
  89. package/landing-pages/ai-saas-template/tsconfig.json +42 -0
  90. package/landing-pages/open-engineer-template/.orchids/orchids.json +8 -0
  91. package/landing-pages/open-engineer-template/README.md +36 -0
  92. package/landing-pages/open-engineer-template/bun.lock +2062 -0
  93. package/landing-pages/open-engineer-template/components.json +22 -0
  94. package/landing-pages/open-engineer-template/eslint.config.mjs +33 -0
  95. package/landing-pages/open-engineer-template/next.config.ts +24 -0
  96. package/landing-pages/open-engineer-template/package-lock.json +13669 -0
  97. package/landing-pages/open-engineer-template/package.json +114 -0
  98. package/landing-pages/open-engineer-template/postcss.config.mjs +7 -0
  99. package/landing-pages/open-engineer-template/public/file.svg +1 -0
  100. package/landing-pages/open-engineer-template/public/globe.svg +1 -0
  101. package/landing-pages/open-engineer-template/public/next.svg +1 -0
  102. package/landing-pages/open-engineer-template/public/vercel.svg +1 -0
  103. package/landing-pages/open-engineer-template/public/window.svg +1 -0
  104. package/landing-pages/open-engineer-template/src/app/favicon.ico +0 -0
  105. package/landing-pages/open-engineer-template/src/app/global-error.tsx +5 -0
  106. package/landing-pages/open-engineer-template/src/app/globals.css +189 -0
  107. package/landing-pages/open-engineer-template/src/app/layout.tsx +42 -0
  108. package/landing-pages/open-engineer-template/src/app/page.tsx +31 -0
  109. package/landing-pages/open-engineer-template/src/components/ErrorReporter.tsx +136 -0
  110. package/landing-pages/open-engineer-template/src/components/sections/cta-stats.tsx +71 -0
  111. package/landing-pages/open-engineer-template/src/components/sections/faq.tsx +188 -0
  112. package/landing-pages/open-engineer-template/src/components/sections/features-grid.tsx +193 -0
  113. package/landing-pages/open-engineer-template/src/components/sections/footer.tsx +137 -0
  114. package/landing-pages/open-engineer-template/src/components/sections/header.tsx +105 -0
  115. package/landing-pages/open-engineer-template/src/components/sections/hero.tsx +118 -0
  116. package/landing-pages/open-engineer-template/src/components/sections/how-it-works.tsx +123 -0
  117. package/landing-pages/open-engineer-template/src/components/sections/pricing.tsx +168 -0
  118. package/landing-pages/open-engineer-template/src/components/sections/testimonials-logos.tsx +88 -0
  119. package/landing-pages/open-engineer-template/src/components/sections/use-cases.tsx +141 -0
  120. package/landing-pages/open-engineer-template/src/components/sections/workflow-tabs.tsx +792 -0
  121. package/landing-pages/open-engineer-template/src/components/ui/accordion.tsx +66 -0
  122. package/landing-pages/open-engineer-template/src/components/ui/alert-dialog.tsx +157 -0
  123. package/landing-pages/open-engineer-template/src/components/ui/alert.tsx +66 -0
  124. package/landing-pages/open-engineer-template/src/components/ui/aspect-ratio.tsx +11 -0
  125. package/landing-pages/open-engineer-template/src/components/ui/avatar.tsx +53 -0
  126. package/landing-pages/open-engineer-template/src/components/ui/badge.tsx +46 -0
  127. package/landing-pages/open-engineer-template/src/components/ui/breadcrumb.tsx +109 -0
  128. package/landing-pages/open-engineer-template/src/components/ui/button-group.tsx +83 -0
  129. package/landing-pages/open-engineer-template/src/components/ui/button.tsx +59 -0
  130. package/landing-pages/open-engineer-template/src/components/ui/calendar.tsx +213 -0
  131. package/landing-pages/open-engineer-template/src/components/ui/card.tsx +92 -0
  132. package/landing-pages/open-engineer-template/src/components/ui/carousel.tsx +241 -0
  133. package/landing-pages/open-engineer-template/src/components/ui/chart.tsx +353 -0
  134. package/landing-pages/open-engineer-template/src/components/ui/checkbox.tsx +32 -0
  135. package/landing-pages/open-engineer-template/src/components/ui/collapsible.tsx +33 -0
  136. package/landing-pages/open-engineer-template/src/components/ui/command.tsx +184 -0
  137. package/landing-pages/open-engineer-template/src/components/ui/context-menu.tsx +252 -0
  138. package/landing-pages/open-engineer-template/src/components/ui/dialog.tsx +143 -0
  139. package/landing-pages/open-engineer-template/src/components/ui/drawer.tsx +135 -0
  140. package/landing-pages/open-engineer-template/src/components/ui/dropdown-menu.tsx +257 -0
  141. package/landing-pages/open-engineer-template/src/components/ui/empty.tsx +104 -0
  142. package/landing-pages/open-engineer-template/src/components/ui/field.tsx +248 -0
  143. package/landing-pages/open-engineer-template/src/components/ui/form.tsx +167 -0
  144. package/landing-pages/open-engineer-template/src/components/ui/hover-card.tsx +44 -0
  145. package/landing-pages/open-engineer-template/src/components/ui/input-group.tsx +170 -0
  146. package/landing-pages/open-engineer-template/src/components/ui/input-otp.tsx +77 -0
  147. package/landing-pages/open-engineer-template/src/components/ui/input.tsx +21 -0
  148. package/landing-pages/open-engineer-template/src/components/ui/item.tsx +193 -0
  149. package/landing-pages/open-engineer-template/src/components/ui/kbd.tsx +28 -0
  150. package/landing-pages/open-engineer-template/src/components/ui/label.tsx +24 -0
  151. package/landing-pages/open-engineer-template/src/components/ui/menubar.tsx +276 -0
  152. package/landing-pages/open-engineer-template/src/components/ui/navigation-menu.tsx +168 -0
  153. package/landing-pages/open-engineer-template/src/components/ui/pagination.tsx +127 -0
  154. package/landing-pages/open-engineer-template/src/components/ui/popover.tsx +48 -0
  155. package/landing-pages/open-engineer-template/src/components/ui/progress.tsx +31 -0
  156. package/landing-pages/open-engineer-template/src/components/ui/radio-group.tsx +45 -0
  157. package/landing-pages/open-engineer-template/src/components/ui/resizable.tsx +56 -0
  158. package/landing-pages/open-engineer-template/src/components/ui/scroll-area.tsx +58 -0
  159. package/landing-pages/open-engineer-template/src/components/ui/select.tsx +185 -0
  160. package/landing-pages/open-engineer-template/src/components/ui/separator.tsx +28 -0
  161. package/landing-pages/open-engineer-template/src/components/ui/sheet.tsx +139 -0
  162. package/landing-pages/open-engineer-template/src/components/ui/sidebar.tsx +726 -0
  163. package/landing-pages/open-engineer-template/src/components/ui/skeleton.tsx +13 -0
  164. package/landing-pages/open-engineer-template/src/components/ui/slider.tsx +63 -0
  165. package/landing-pages/open-engineer-template/src/components/ui/sonner.tsx +25 -0
  166. package/landing-pages/open-engineer-template/src/components/ui/spinner.tsx +16 -0
  167. package/landing-pages/open-engineer-template/src/components/ui/switch.tsx +31 -0
  168. package/landing-pages/open-engineer-template/src/components/ui/table.tsx +116 -0
  169. package/landing-pages/open-engineer-template/src/components/ui/tabs.tsx +66 -0
  170. package/landing-pages/open-engineer-template/src/components/ui/textarea.tsx +18 -0
  171. package/landing-pages/open-engineer-template/src/components/ui/toggle-group.tsx +73 -0
  172. package/landing-pages/open-engineer-template/src/components/ui/toggle.tsx +47 -0
  173. package/landing-pages/open-engineer-template/src/components/ui/tooltip.tsx +61 -0
  174. package/landing-pages/open-engineer-template/src/hooks/use-mobile.ts +19 -0
  175. package/landing-pages/open-engineer-template/src/lib/hooks/use-mobile.tsx +21 -0
  176. package/landing-pages/open-engineer-template/src/lib/utils.ts +6 -0
  177. package/landing-pages/open-engineer-template/src/visual-edits/VisualEditsMessenger.tsx +2159 -0
  178. package/landing-pages/open-engineer-template/src/visual-edits/component-tagger-loader.js +460 -0
  179. package/landing-pages/open-engineer-template/tsconfig.json +42 -0
  180. package/package.json +36 -0
  181. package/templates.json +22 -0
@@ -0,0 +1,114 @@
1
+ {
2
+ "name": "app",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev --turbopack",
7
+ "build": "next build",
8
+ "start": "next start",
9
+ "lint": "next lint"
10
+ },
11
+ "dependencies": {
12
+ "@babel/parser": "^7.28.5",
13
+ "@headlessui/react": "^2.2.9",
14
+ "@heroicons/react": "^2.2.0",
15
+ "@hookform/resolvers": "^5.1.1",
16
+ "@libsql/client": "^0.15.15",
17
+ "@number-flow/react": "^0.5.10",
18
+ "@radix-ui/react-accordion": "^1.2.11",
19
+ "@radix-ui/react-alert-dialog": "^1.1.14",
20
+ "@radix-ui/react-aspect-ratio": "^1.1.7",
21
+ "@radix-ui/react-avatar": "^1.1.10",
22
+ "@radix-ui/react-checkbox": "^1.3.2",
23
+ "@radix-ui/react-collapsible": "^1.1.11",
24
+ "@radix-ui/react-context-menu": "^2.2.15",
25
+ "@radix-ui/react-dialog": "^1.1.14",
26
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
27
+ "@radix-ui/react-hover-card": "^1.1.14",
28
+ "@radix-ui/react-label": "^2.1.7",
29
+ "@radix-ui/react-menubar": "^1.1.15",
30
+ "@radix-ui/react-navigation-menu": "^1.2.13",
31
+ "@radix-ui/react-popover": "^1.1.14",
32
+ "@radix-ui/react-progress": "^1.1.7",
33
+ "@radix-ui/react-radio-group": "^1.3.7",
34
+ "@radix-ui/react-scroll-area": "^1.2.9",
35
+ "@radix-ui/react-select": "^2.2.5",
36
+ "@radix-ui/react-separator": "^1.1.7",
37
+ "@radix-ui/react-slider": "^1.3.5",
38
+ "@radix-ui/react-slot": "^1.2.3",
39
+ "@radix-ui/react-switch": "^1.2.5",
40
+ "@radix-ui/react-tabs": "^1.1.12",
41
+ "@radix-ui/react-toggle": "^1.1.9",
42
+ "@radix-ui/react-toggle-group": "^1.1.10",
43
+ "@radix-ui/react-tooltip": "^1.2.7",
44
+ "@react-three/drei": "^10.4.4",
45
+ "@react-three/fiber": "^9.0.0-alpha.8",
46
+ "@tabler/icons-react": "^3.35.0",
47
+ "@tailwindcss/typography": "^0.5.19",
48
+ "@tsparticles/engine": "^3.8.1",
49
+ "@tsparticles/react": "^3.0.0",
50
+ "@tsparticles/slim": "^3.8.1",
51
+ "atmn": "^0.0.28",
52
+ "autumn-js": "^0.1.43",
53
+ "bcrypt": "^6.0.0",
54
+ "better-auth": "^1.4.15",
55
+ "class-variance-authority": "^0.7.1",
56
+ "clsx": "^2.1.1",
57
+ "cmdk": "^1.1.1",
58
+ "cobe": "^0.6.5",
59
+ "date-fns": "^4.1.0",
60
+ "dotted-map": "^2.2.3",
61
+ "drizzle-kit": "^0.31.6",
62
+ "drizzle-orm": "^0.44.7",
63
+ "embla-carousel-auto-scroll": "^8.6.0",
64
+ "embla-carousel-autoplay": "^8.6.0",
65
+ "embla-carousel-react": "^8.6.0",
66
+ "estree-walker": "2.0.2",
67
+ "framer-motion": "^12.23.24",
68
+ "input-otp": "^1.4.2",
69
+ "lucide-react": "^0.552.0",
70
+ "mini-svg-data-uri": "^1.4.4",
71
+ "motion": "^12.23.24",
72
+ "motion-dom": "^12.23.23",
73
+ "next": "^16.1.3",
74
+ "next-themes": "^0.4.6",
75
+ "qss": "^3.0.0",
76
+ "react": "^19.0.0",
77
+ "react-day-picker": "^9.8.0",
78
+ "react-dom": "^19.0.0",
79
+ "react-dropzone": "^14.3.8",
80
+ "react-fast-marquee": "^1.6.5",
81
+ "react-hook-form": "^7.60.0",
82
+ "react-icons": "^5.5.0",
83
+ "react-intersection-observer": "^10.0.0",
84
+ "react-resizable-panels": "^3.0.3",
85
+ "react-responsive-masonry": "^2.7.1",
86
+ "react-syntax-highlighter": "^15.6.1",
87
+ "react-wrap-balancer": "^1.1.1",
88
+ "recharts": "^3.0.2",
89
+ "simplex-noise": "^4.0.3",
90
+ "sonner": "^2.0.6",
91
+ "stripe": "^19.2.0",
92
+ "swiper": "^12.0.3",
93
+ "tailwind-merge": "^3.3.1",
94
+ "tailwindcss-animate": "^1.0.7",
95
+ "three": "^0.178.0",
96
+ "three-globe": "^2.43.0",
97
+ "vaul": "^1.1.2",
98
+ "zod": "^4.1.12"
99
+ },
100
+ "devDependencies": {
101
+ "@eslint/eslintrc": "^3.3.1",
102
+ "@tailwindcss/postcss": "^4",
103
+ "@types/node": "^20",
104
+ "@types/react": "^19",
105
+ "@types/react-dom": "^19",
106
+ "@types/react-syntax-highlighter": "^15.5.13",
107
+ "@types/three": "^0.178.0",
108
+ "eslint": "^9.38.0",
109
+ "eslint-config-next": "^16.0.1",
110
+ "tailwindcss": "^4",
111
+ "tw-animate-css": "^1.4.0",
112
+ "typescript": "^5"
113
+ }
114
+ }
@@ -0,0 +1,7 @@
1
+ const config = {
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ },
5
+ };
6
+
7
+ export default config;
@@ -0,0 +1 @@
1
+ <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
@@ -0,0 +1,5 @@
1
+ "use client";
2
+
3
+ import ErrorReporter from "@/components/ErrorReporter";
4
+
5
+ export default ErrorReporter;
@@ -0,0 +1,189 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
2
+ @import "tailwindcss";
3
+ @import "tw-animate-css";
4
+
5
+ @custom-variant dark (&:is(.dark *));
6
+
7
+ @theme {
8
+ --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
9
+
10
+ --color-background: #FAFAFA;
11
+ --color-foreground: #09090B;
12
+
13
+ --color-card: #FFFFFF;
14
+ --color-card-foreground: #09090B;
15
+
16
+ --color-popover: #FFFFFF;
17
+ --color-popover-foreground: #09090B;
18
+
19
+ --color-primary: #18181B;
20
+ --color-primary-foreground: #FFFFFF;
21
+
22
+ --color-secondary: #F4F4F5;
23
+ --color-secondary-foreground: #09090B;
24
+
25
+ --color-muted: #F4F4F5;
26
+ --color-muted-foreground: #71717A;
27
+
28
+ --color-accent: #E4E4E7;
29
+ --color-accent-foreground: #18181B;
30
+
31
+ --color-destructive: #EF4444;
32
+ --color-destructive-foreground: #FAFAFA;
33
+
34
+ --color-border: #E4E4E7;
35
+ --color-input: #E4E4E7;
36
+ --color-ring: #18181B;
37
+
38
+ --color-chart-1: #18181B;
39
+ --color-chart-2: #71717A;
40
+ --color-chart-3: #A1A1AA;
41
+ --color-chart-4: #D4D4D8;
42
+ --color-chart-5: #E4E4E7;
43
+
44
+ --color-sidebar: #FAFAFA;
45
+ --color-sidebar-foreground: #09090B;
46
+ --color-sidebar-primary: #18181B;
47
+ --color-sidebar-primary-foreground: #FFFFFF;
48
+ --color-sidebar-accent: #F4F4F5;
49
+ --color-sidebar-accent-foreground: #18181B;
50
+ --color-sidebar-border: #E4E4E7;
51
+ --color-sidebar-ring: #18181B;
52
+
53
+ --radius-lg: 0.75rem;
54
+ --radius-md: 0.5rem;
55
+ --radius-sm: 0.25rem;
56
+
57
+ --shadow-3d-primary: inset 0 2px 3px 0 rgba(255, 255, 255, 0.35), inset 2px -4px 4px 0 rgba(0, 0, 0, 0.15);
58
+ --shadow-3d-secondary: inset 0 2px 3px 0 rgba(255, 255, 255, 0.45), inset 2px -4px 4px 0 rgba(0, 0, 0, 0.1);
59
+
60
+ --animate-accordion-down: accordion-down 0.2s ease-out;
61
+ --animate-accordion-up: accordion-up 0.2s ease-out;
62
+
63
+ @keyframes accordion-down {
64
+ from {
65
+ height: 0;
66
+ }
67
+ to {
68
+ height: var(--radix-accordion-content-height);
69
+ }
70
+ }
71
+ @keyframes accordion-up {
72
+ from {
73
+ height: var(--radix-accordion-content-height);
74
+ }
75
+ to {
76
+ height: 0;
77
+ }
78
+ }
79
+ }
80
+
81
+ @layer base {
82
+ *,
83
+ ::after,
84
+ ::before,
85
+ ::backdrop,
86
+ ::file-selector-button {
87
+ border-color: #E4E4E7;
88
+ }
89
+
90
+ :root {
91
+ --background: #FAFAFA;
92
+ --foreground: #09090B;
93
+ --card: #FFFFFF;
94
+ --card-foreground: #09090B;
95
+ --popover: #FFFFFF;
96
+ --popover-foreground: #09090B;
97
+ --primary: #18181B;
98
+ --primary-foreground: #FFFFFF;
99
+ --secondary: #F4F4F5;
100
+ --secondary-foreground: #09090B;
101
+ --muted: #F4F4F5;
102
+ --muted-foreground: #71717A;
103
+ --accent: #E4E4E7;
104
+ --accent-foreground: #18181B;
105
+ --destructive: #EF4444;
106
+ --destructive-foreground: #FAFAFA;
107
+ --border: #E4E4E7;
108
+ --input: #E4E4E7;
109
+ --ring: #18181B;
110
+ --radius: 0.75rem;
111
+ }
112
+
113
+ html {
114
+ scroll-behavior: smooth;
115
+ }
116
+
117
+ body {
118
+ font-family: var(--font-sans);
119
+ background-color: var(--background);
120
+ color: var(--foreground);
121
+ -webkit-font-smoothing: antialiased;
122
+ }
123
+
124
+ h1, h2, h3, h4, h5, h6 {
125
+ font-weight: 600;
126
+ line-height: 1.2;
127
+ letter-spacing: -0.02em;
128
+ }
129
+
130
+ h1 {
131
+ font-size: 3rem;
132
+ }
133
+
134
+ h2 {
135
+ font-size: 2.25rem;
136
+ }
137
+
138
+ h3 {
139
+ font-size: 1.25rem;
140
+ }
141
+
142
+ .container {
143
+ width: 100%;
144
+ margin-left: auto;
145
+ margin-right: auto;
146
+ max-width: 1280px;
147
+ padding-left: 1.5rem;
148
+ padding-right: 1.5rem;
149
+ border-left: 1px solid var(--border);
150
+ border-right: 1px solid var(--border);
151
+ }
152
+
153
+ .font-display {
154
+ font-family: var(--font-sans);
155
+ font-weight: 600;
156
+ }
157
+
158
+ .glass-card {
159
+ background-color: rgba(255, 255, 255, 0.75);
160
+ backdrop-filter: blur(12px);
161
+ border: 1px solid var(--border);
162
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.05);
163
+ }
164
+
165
+ .btn-3d-primary {
166
+ box-shadow: var(--shadow-3d-primary);
167
+ transition: all 0.3s ease-in-out;
168
+ }
169
+
170
+ .btn-3d-secondary {
171
+ box-shadow: var(--shadow-3d-secondary);
172
+ transition: all 0.3s ease-in-out;
173
+ }
174
+
175
+ .dot-grid {
176
+ background-image: radial-gradient(circle, #E4E4E7 1px, transparent 1px);
177
+ background-size: 24px 24px;
178
+ }
179
+ }
180
+
181
+ @layer base {
182
+ * {
183
+ @apply border-border;
184
+ }
185
+
186
+ body {
187
+ @apply bg-background text-foreground;
188
+ }
189
+ }
@@ -0,0 +1,42 @@
1
+ import type { Metadata } from "next";
2
+ import "./globals.css";
3
+ import VisualEditsMessenger from "../visual-edits/VisualEditsMessenger";
4
+ import ErrorReporter from "@/components/ErrorReporter";
5
+ import Script from "next/script";
6
+
7
+ export const metadata: Metadata = {
8
+ title: "Create Next App",
9
+ description: "Generated by create next app",
10
+ };
11
+
12
+ export default function RootLayout({
13
+ children,
14
+ }: Readonly<{
15
+ children: React.ReactNode;
16
+ }>) {
17
+ return (
18
+ <html lang="en">
19
+ <body className="antialiased">
20
+ <Script
21
+ id="orchids-browser-logs"
22
+ src="https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/scripts/orchids-browser-logs.js"
23
+ strategy="afterInteractive"
24
+ data-orchids-project-id="73098f9c-15b9-43d6-98e6-96ab2eba390e"
25
+ />
26
+ <ErrorReporter />
27
+ <Script
28
+ src="https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/scripts//route-messenger.js"
29
+ strategy="afterInteractive"
30
+ data-target-origin="*"
31
+ data-message-type="ROUTE_CHANGE"
32
+ data-include-search-params="true"
33
+ data-only-in-iframe="true"
34
+ data-debug="true"
35
+ data-custom-data='{"appName": "YourApp", "version": "1.0.0", "greeting": "hi"}'
36
+ />
37
+ {children}
38
+ <VisualEditsMessenger />
39
+ </body>
40
+ </html>
41
+ );
42
+ }
@@ -0,0 +1,31 @@
1
+ import Header from "@/components/sections/header";
2
+ import HeroSection from "@/components/sections/hero";
3
+ import WorkflowTabs from "@/components/sections/workflow-tabs";
4
+ import FeaturesGrid from "@/components/sections/features-grid";
5
+ import HowItWorks from "@/components/sections/how-it-works";
6
+ import UseCasesSection from "@/components/sections/use-cases";
7
+ import TestimonialLogos from "@/components/sections/testimonials-logos";
8
+ import PricingSection from "@/components/sections/pricing";
9
+ import FAQSection from "@/components/sections/faq";
10
+ import CTAStats from "@/components/sections/cta-stats";
11
+ import Footer from "@/components/sections/footer";
12
+
13
+ export default function Home() {
14
+ return (
15
+ <div className="flex min-h-screen flex-col bg-background">
16
+ <Header />
17
+ <main className="flex-1">
18
+ <HeroSection />
19
+ <WorkflowTabs />
20
+ <FeaturesGrid />
21
+ <HowItWorks />
22
+ <UseCasesSection />
23
+ <TestimonialLogos />
24
+ <PricingSection />
25
+ <FAQSection />
26
+ <CTAStats />
27
+ </main>
28
+ <Footer />
29
+ </div>
30
+ );
31
+ }
@@ -0,0 +1,136 @@
1
+ "use client";
2
+
3
+ import { useEffect, useRef } from "react";
4
+
5
+ type ReporterProps = {
6
+ /* ⎯⎯ props are only provided on the global-error page ⎯⎯ */
7
+ error?: Error & { digest?: string };
8
+ reset?: () => void;
9
+ };
10
+
11
+ export default function ErrorReporter({ error, reset }: ReporterProps) {
12
+ /* ─ instrumentation shared by every route ─ */
13
+ const lastOverlayMsg = useRef("");
14
+ const pollRef = useRef<NodeJS.Timeout>();
15
+
16
+ useEffect(() => {
17
+ const inIframe = window.parent !== window;
18
+ if (!inIframe) return;
19
+
20
+ const send = (payload: unknown) => window.parent.postMessage(payload, "*");
21
+
22
+ const onError = (e: ErrorEvent) =>
23
+ send({
24
+ type: "ERROR_CAPTURED",
25
+ error: {
26
+ message: e.message,
27
+ stack: e.error?.stack,
28
+ filename: e.filename,
29
+ lineno: e.lineno,
30
+ colno: e.colno,
31
+ source: "window.onerror",
32
+ },
33
+ timestamp: Date.now(),
34
+ });
35
+
36
+ const onReject = (e: PromiseRejectionEvent) =>
37
+ send({
38
+ type: "ERROR_CAPTURED",
39
+ error: {
40
+ message: e.reason?.message ?? String(e.reason),
41
+ stack: e.reason?.stack,
42
+ source: "unhandledrejection",
43
+ },
44
+ timestamp: Date.now(),
45
+ });
46
+
47
+ const pollOverlay = () => {
48
+ const overlay = document.querySelector("[data-nextjs-dialog-overlay]");
49
+ const node =
50
+ overlay?.querySelector(
51
+ "h1, h2, .error-message, [data-nextjs-dialog-body]"
52
+ ) ?? null;
53
+ const txt = node?.textContent ?? node?.innerHTML ?? "";
54
+ if (txt && txt !== lastOverlayMsg.current) {
55
+ lastOverlayMsg.current = txt;
56
+ send({
57
+ type: "ERROR_CAPTURED",
58
+ error: { message: txt, source: "nextjs-dev-overlay" },
59
+ timestamp: Date.now(),
60
+ });
61
+ }
62
+ };
63
+
64
+ window.addEventListener("error", onError);
65
+ window.addEventListener("unhandledrejection", onReject);
66
+ pollRef.current = setInterval(pollOverlay, 1000);
67
+
68
+ return () => {
69
+ window.removeEventListener("error", onError);
70
+ window.removeEventListener("unhandledrejection", onReject);
71
+ pollRef.current && clearInterval(pollRef.current);
72
+ };
73
+ }, []);
74
+
75
+ /* ─ extra postMessage when on the global-error route ─ */
76
+ useEffect(() => {
77
+ if (!error) return;
78
+ window.parent.postMessage(
79
+ {
80
+ type: "global-error-reset",
81
+ error: {
82
+ message: error.message,
83
+ stack: error.stack,
84
+ digest: error.digest,
85
+ name: error.name,
86
+ },
87
+ timestamp: Date.now(),
88
+ userAgent: navigator.userAgent,
89
+ },
90
+ "*"
91
+ );
92
+ }, [error]);
93
+
94
+ /* ─ ordinary pages render nothing ─ */
95
+ if (!error) return null;
96
+
97
+ /* ─ global-error UI ─ */
98
+ return (
99
+ <html>
100
+ <body className="min-h-screen bg-background text-foreground flex items-center justify-center p-4">
101
+ <div className="max-w-md w-full text-center space-y-6">
102
+ <div className="space-y-2">
103
+ <h1 className="text-2xl font-bold text-destructive">
104
+ Something went wrong!
105
+ </h1>
106
+ <p className="text-muted-foreground">
107
+ An unexpected error occurred. Please try again fixing with Orchids
108
+ </p>
109
+ </div>
110
+ <div className="space-y-2">
111
+ {process.env.NODE_ENV === "development" && (
112
+ <details className="mt-4 text-left">
113
+ <summary className="cursor-pointer text-sm text-muted-foreground hover:text-foreground">
114
+ Error details
115
+ </summary>
116
+ <pre className="mt-2 text-xs bg-muted p-2 rounded overflow-auto">
117
+ {error.message}
118
+ {error.stack && (
119
+ <div className="mt-2 text-muted-foreground">
120
+ {error.stack}
121
+ </div>
122
+ )}
123
+ {error.digest && (
124
+ <div className="mt-2 text-muted-foreground">
125
+ Digest: {error.digest}
126
+ </div>
127
+ )}
128
+ </pre>
129
+ </details>
130
+ )}
131
+ </div>
132
+ </div>
133
+ </body>
134
+ </html>
135
+ );
136
+ }
@@ -0,0 +1,71 @@
1
+ import React from 'react';
2
+
3
+ /**
4
+ * CTAStats Component
5
+ *
6
+ * Clones the final call-to-action section with a split layout.
7
+ * Left: Content with "Boost your team's productivity" and CTA buttons.
8
+ * Right: Productivity growth metrics (1.42 Million+ tasks, 98% reduction).
9
+ */
10
+ const CTAStats = () => {
11
+ return (
12
+ <section className="relative w-full border-t bg-background">
13
+ <div className="container mx-auto max-w-7xl border-x px-0">
14
+ <div className="flex flex-col lg:flex-row">
15
+ {/* Left Content Column */}
16
+ <div className="flex w-full flex-col justify-center border-b p-8 sm:p-12 lg:w-3/5 lg:border-b-0 lg:border-r lg:p-16">
17
+ <h2 className="mb-6 max-w-xl text-3xl font-semibold leading-tight tracking-tight text-foreground sm:text-4xl lg:text-5xl">
18
+ Boost your team&apos;s productivity with AI in minutes
19
+ </h2>
20
+ <p className="mb-10 max-w-lg text-lg text-muted-foreground sm:text-xl">
21
+ Automate repetitive workflows, get instant insights, and scale your output effortlessly with FlowMate. Start free or connect with our team to see it in action.
22
+ </p>
23
+
24
+ <div className="flex flex-wrap gap-4">
25
+ <a
26
+ href="/register"
27
+ className="btn-3d-primary inline-flex h-12 items-center justify-center rounded-lg bg-primary px-8 text-base font-medium text-white transition-all hover:brightness-110 active:scale-95"
28
+ >
29
+ Get started
30
+ </a>
31
+ <a
32
+ href="#pricing"
33
+ className="btn-3d-secondary inline-flex h-12 items-center justify-center rounded-lg bg-secondary px-8 text-base font-medium text-secondary-foreground transition-all hover:brightness-105 active:scale-95"
34
+ >
35
+ View pricing
36
+ </a>
37
+ </div>
38
+ </div>
39
+
40
+ {/* Right Stats Column */}
41
+ <div className="flex w-full flex-col lg:w-2/5">
42
+ {/* Stat Item 1 */}
43
+ <div className="group flex flex-col justify-center border-b p-8 sm:p-12 transition-colors hover:bg-muted/30 lg:h-1/2 lg:p-16">
44
+ <div className="mb-2 text-4xl font-semibold tracking-tight text-foreground sm:text-5xl">
45
+ 1.42Million+
46
+ </div>
47
+ <p className="text-lg text-muted-foreground">
48
+ Tasks executed automatically every week without any issues.
49
+ </p>
50
+ </div>
51
+
52
+ {/* Stat Item 2 */}
53
+ <div className="group flex flex-col justify-center p-8 sm:p-12 transition-colors hover:bg-muted/30 lg:h-1/2 lg:p-16">
54
+ <div className="mb-2 text-4xl font-semibold tracking-tight text-foreground sm:text-5xl">
55
+ 98%
56
+ </div>
57
+ <p className="text-lg text-muted-foreground">
58
+ Significant reduction in manual admin time per user achieved.
59
+ </p>
60
+ </div>
61
+ </div>
62
+ </div>
63
+
64
+ {/* Subtle decorative dot grid element (optional based on high-level design) */}
65
+ <div className="dot-grid absolute inset-0 -z-10 pointer-events-none opacity-[0.03]" />
66
+ </div>
67
+ </section>
68
+ );
69
+ };
70
+
71
+ export default CTAStats;