agentvibes 2.0.9 → 2.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/agent-vibes/bmad.md +203 -0
- package/.claude/github-star-reminder.txt +1 -0
- package/.claude/hooks/bmad-tts-injector.sh +333 -0
- package/.claude/hooks/bmad-voice-manager.sh +34 -0
- package/.claude/hooks/check-output-style.sh +2 -2
- package/.claude/hooks/github-star-reminder.sh +94 -0
- package/.claude/hooks/personality-manager.sh +2 -2
- package/.claude/hooks/piper-installer.sh +194 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +30 -3
- package/.claude/hooks/play-tts-local-wrapper.sh +44 -0
- package/.claude/hooks/play-tts-piper.sh +10 -2
- package/.claude/hooks/play-tts-remote.sh +81 -0
- package/.claude/hooks/play-tts.sh +34 -0
- package/.claude/hooks/provider-commands.sh +30 -1
- package/.claude/hooks/voice-manager.sh +2 -2
- package/.claude/output-styles/agent-vibes.md +52 -36
- package/README.md +2 -2
- package/RELEASE_NOTES.md +412 -0
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
- package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
- package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
- package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
- package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
- package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
- package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
- package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
- package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
- package/agentvibes.org/.claude/journal/index.html +91 -0
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
- package/agentvibes.org/.claude/personalities/angry.md +16 -0
- package/agentvibes.org/.claude/personalities/annoying.md +16 -0
- package/agentvibes.org/.claude/personalities/crass.md +16 -0
- package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
- package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
- package/agentvibes.org/.claude/personalities/flirty.md +22 -0
- package/agentvibes.org/.claude/personalities/funny.md +16 -0
- package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
- package/agentvibes.org/.claude/personalities/millennial.md +16 -0
- package/agentvibes.org/.claude/personalities/moody.md +16 -0
- package/agentvibes.org/.claude/personalities/normal.md +18 -0
- package/agentvibes.org/.claude/personalities/pirate.md +16 -0
- package/agentvibes.org/.claude/personalities/poetic.md +16 -0
- package/agentvibes.org/.claude/personalities/professional.md +16 -0
- package/agentvibes.org/.claude/personalities/robot.md +16 -0
- package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
- package/agentvibes.org/.claude/personalities/sassy.md +16 -0
- package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
- package/agentvibes.org/.claude/personalities/zen.md +16 -0
- package/agentvibes.org/.mcp-minimal.json +60 -0
- package/agentvibes.org/CHANGELOG.md +56 -0
- package/agentvibes.org/README.md +93 -0
- package/agentvibes.org/app/(auth)/layout.tsx +15 -0
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
- package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
- package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
- package/agentvibes.org/app/(default)/layout.tsx +31 -0
- package/agentvibes.org/app/(default)/page.tsx +20 -0
- package/agentvibes.org/app/api/hello/route.ts +3 -0
- package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
- package/agentvibes.org/app/css/style.css +100 -0
- package/agentvibes.org/app/layout.tsx +63 -0
- package/agentvibes.org/components/cta.tsx +58 -0
- package/agentvibes.org/components/features.tsx +256 -0
- package/agentvibes.org/components/hero-home.tsx +133 -0
- package/agentvibes.org/components/modal-video.tsx +137 -0
- package/agentvibes.org/components/page-illustration.tsx +55 -0
- package/agentvibes.org/components/spotlight.tsx +77 -0
- package/agentvibes.org/components/testimonials.tsx +282 -0
- package/agentvibes.org/components/ui/footer.tsx +82 -0
- package/agentvibes.org/components/ui/header.tsx +53 -0
- package/agentvibes.org/components/ui/logo.tsx +10 -0
- package/agentvibes.org/components/workflows.tsx +176 -0
- package/agentvibes.org/next.config.js +4 -0
- package/agentvibes.org/package-lock.json +1974 -0
- package/agentvibes.org/package.json +30 -0
- package/agentvibes.org/pnpm-lock.yaml +1141 -0
- package/agentvibes.org/postcss.config.js +5 -0
- package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
- package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
- package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
- package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
- package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
- package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
- package/agentvibes.org/public/favicon.ico +0 -0
- package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
- package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
- package/agentvibes.org/public/images/blurred-shape.svg +1 -0
- package/agentvibes.org/public/images/client-logo-01.svg +1 -0
- package/agentvibes.org/public/images/client-logo-02.svg +1 -0
- package/agentvibes.org/public/images/client-logo-03.svg +1 -0
- package/agentvibes.org/public/images/client-logo-04.svg +1 -0
- package/agentvibes.org/public/images/client-logo-05.svg +1 -0
- package/agentvibes.org/public/images/client-logo-06.svg +1 -0
- package/agentvibes.org/public/images/client-logo-07.svg +1 -0
- package/agentvibes.org/public/images/client-logo-08.svg +1 -0
- package/agentvibes.org/public/images/client-logo-09.svg +1 -0
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +1 -0
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +1 -0
- package/agentvibes.org/public/images/page-illustration.svg +1 -0
- package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
- package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
- package/agentvibes.org/public/images/workflow-01.png +0 -0
- package/agentvibes.org/public/images/workflow-02.png +0 -0
- package/agentvibes.org/public/images/workflow-03.png +0 -0
- package/agentvibes.org/public/videos/video.mp4 +0 -0
- package/agentvibes.org/tsconfig.json +28 -0
- package/agentvibes.org/utils/useMasonry.tsx +67 -0
- package/agentvibes.org/utils/useMousePosition.tsx +27 -0
- package/docs/REMOTE_TTS_SETUP.md +190 -0
- package/package.json +2 -2
- package/src/installer.js +193 -9
- package/test/helpers/test-helper.bash +4 -2
- package/test/unit/personality-manager.bats +16 -4
- package/test/unit/personality-voice-mapping.bats +15 -6
- package/test/unit/play-tts.bats +0 -9
- package/.claude/commands/agent-vibes-bmad.md +0 -132
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"sentry": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": [
|
|
6
|
+
"@sentry/mcp-server@latest",
|
|
7
|
+
"--host=sentry.io"
|
|
8
|
+
],
|
|
9
|
+
"env": {
|
|
10
|
+
"SENTRY_ACCESS_TOKEN": "${SENTRY_ACCESS_TOKEN}",
|
|
11
|
+
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"whatsapp": {
|
|
15
|
+
"command": "/home/fire/.local/bin/uv",
|
|
16
|
+
"args": [
|
|
17
|
+
"--directory",
|
|
18
|
+
"/home/fire/claude/whatsapp-mcp/whatsapp-mcp-server",
|
|
19
|
+
"run",
|
|
20
|
+
"main.py"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"chrome-devtools": {
|
|
24
|
+
"command": "/home/fire/.nvm/versions/node/v22.20.0/bin/npx",
|
|
25
|
+
"args": [
|
|
26
|
+
"chrome-devtools-mcp@latest",
|
|
27
|
+
"--browserUrl=http://localhost:9222"
|
|
28
|
+
],
|
|
29
|
+
"env": {
|
|
30
|
+
"PATH": "/home/fire/.nvm/versions/node/v22.20.0/bin:${PATH}",
|
|
31
|
+
"NODE_PATH": "/home/fire/.nvm/versions/node/v22.20.0/lib/node_modules"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"elevenlabs": {
|
|
35
|
+
"command": "npx",
|
|
36
|
+
"args": ["@microagents/mcp-server-elevenlabs"],
|
|
37
|
+
"env": {
|
|
38
|
+
"ELEVENLABS_API_KEY": "${ELEVENLABS_API_KEY}",
|
|
39
|
+
"ELEVENLABS_MCP_BASE_PATH": "/home/fire/claude/AgentVibes/agentvibes.org/.claude/audio"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"vercel": {
|
|
43
|
+
"command": "npx",
|
|
44
|
+
"args": ["-y", "@vercel/mcp-server"],
|
|
45
|
+
"env": {
|
|
46
|
+
"VERCEL_API_TOKEN": "${AGENT_VIBES_VERCEL_TOKEN}"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"spaceship": {
|
|
50
|
+
"command": "node",
|
|
51
|
+
"args": [
|
|
52
|
+
"/home/fire/claude/spaceship-mcp/dist/index.js"
|
|
53
|
+
],
|
|
54
|
+
"env": {
|
|
55
|
+
"SPACESHIP_API_KEY": "${SPACESHIP_API_KEY}",
|
|
56
|
+
"SPACESHIP_API_SECRET": "${SPACESHIP_API_SECRET}"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# CHANGELOG.md
|
|
2
|
+
|
|
3
|
+
## [5.0.0] - 2025-02-04
|
|
4
|
+
|
|
5
|
+
- Updgrade to Tailwind v4
|
|
6
|
+
- Update dependencies
|
|
7
|
+
|
|
8
|
+
## [4.1.0] - 2024-12-08
|
|
9
|
+
|
|
10
|
+
- Update dependencies + Upgrade to Next.js 15
|
|
11
|
+
|
|
12
|
+
## [4.0.0] - 2024-09-11
|
|
13
|
+
|
|
14
|
+
Redesign the entire template
|
|
15
|
+
|
|
16
|
+
## [3.3.0] - 2023-12-08
|
|
17
|
+
|
|
18
|
+
Update to Next.js 14
|
|
19
|
+
Update dependencies
|
|
20
|
+
|
|
21
|
+
## [3.2.2] - 2023-10-04
|
|
22
|
+
|
|
23
|
+
Update Twitter icon
|
|
24
|
+
Update dependencies
|
|
25
|
+
|
|
26
|
+
## [3.2.0] - 2023-05-31
|
|
27
|
+
|
|
28
|
+
Update dependencies and fix some issues
|
|
29
|
+
|
|
30
|
+
## [3.1.0] - 2023-05-07
|
|
31
|
+
|
|
32
|
+
Modal video improvements
|
|
33
|
+
|
|
34
|
+
## [3.0.0] - 2023-04-12
|
|
35
|
+
|
|
36
|
+
Conversion to Next.js
|
|
37
|
+
|
|
38
|
+
## [2.0.3] - 2023-03-28
|
|
39
|
+
|
|
40
|
+
Fix video
|
|
41
|
+
|
|
42
|
+
## [2.0.2] - 2023-03-28
|
|
43
|
+
|
|
44
|
+
Add self-hosted video
|
|
45
|
+
|
|
46
|
+
## [2.0.1] - 2023-02-16
|
|
47
|
+
|
|
48
|
+
Remove header links
|
|
49
|
+
|
|
50
|
+
## [2.0.0] - 2023-02-16
|
|
51
|
+
|
|
52
|
+
Replace Cruip CSS with Tailwind CSS
|
|
53
|
+
|
|
54
|
+
## [1.0.0] - 2020-04-07
|
|
55
|
+
|
|
56
|
+
First release
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Free React / Next.js landing page template
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
**Open** is a **free React / Next.js landing page template built with Tailwind CSS** for developers/makers who want to create a quick and professional landing page for their open source projects, SaaS products, online services, and more.
|
|
6
|
+
|
|
7
|
+
**UPDATE 2025-02-04** Added Tailwind v4 support!
|
|
8
|
+
|
|
9
|
+
Use it for whatever you want, and be sure to reach us out on [Twitter](https://twitter.com/Cruip_com) if you build anything cool/useful with it.
|
|
10
|
+
|
|
11
|
+
Created and maintained with ❤️ by [Cruip.com](https://cruip.com).
|
|
12
|
+
|
|
13
|
+
_Version 1.0.0 built with the Cruip CSS is available [here](https://github.com/cruip/open-react-template/releases/tag/1.0.0)._
|
|
14
|
+
_Version 2.0.3 built with Tailwind CSS and React + Vite is available [here](https://github.com/cruip/open-react-template/releases/tag/2.0.3)._
|
|
15
|
+
_Version 3.3.0 (before redesign) built with Tailwind CSS and Next.js is available [here](https://github.com/cruip/open-react-template/releases/tag/3.3.0)._
|
|
16
|
+
|
|
17
|
+
## Live demo
|
|
18
|
+
|
|
19
|
+
Check the live demo here 👉️ [https://open.cruip.com/](https://open.cruip.com/)
|
|
20
|
+
|
|
21
|
+
## Open PRO
|
|
22
|
+
|
|
23
|
+
[](https://cruip.com/)
|
|
24
|
+
|
|
25
|
+
## Design files
|
|
26
|
+
|
|
27
|
+
If you need the design files, you can download them from Figma's Community 👉 https://bit.ly/401KSUS
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
|
|
32
|
+
|
|
33
|
+
### Getting Started
|
|
34
|
+
|
|
35
|
+
First, run the development server:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run dev
|
|
39
|
+
# or
|
|
40
|
+
pnpm dev (recommended)
|
|
41
|
+
# or
|
|
42
|
+
yarn dev
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
46
|
+
|
|
47
|
+
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
|
48
|
+
|
|
49
|
+
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
|
|
50
|
+
|
|
51
|
+
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
|
|
52
|
+
|
|
53
|
+
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
|
|
54
|
+
|
|
55
|
+
### Learn More
|
|
56
|
+
|
|
57
|
+
To learn more about Next.js, take a look at the following resources:
|
|
58
|
+
|
|
59
|
+
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
|
60
|
+
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
|
61
|
+
|
|
62
|
+
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
|
|
63
|
+
|
|
64
|
+
### Deploy on Vercel
|
|
65
|
+
|
|
66
|
+
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
|
67
|
+
|
|
68
|
+
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
|
|
69
|
+
|
|
70
|
+
### Support notes
|
|
71
|
+
|
|
72
|
+
This template has been developed with the App Router (`app`) and React Server Components. If you’re unfamiliar with these beta features, you can find more information about them on the Next.js beta documentation page. So, please note that any request dealing with React (e.g. extra features, customisations, et cetera) is to be considered out of the support scope.
|
|
73
|
+
|
|
74
|
+
For more information about what support covers, please see our (FAQs)[https://cruip.com/faq/].
|
|
75
|
+
|
|
76
|
+
## Credits
|
|
77
|
+
|
|
78
|
+
- [Nucleo](https://nucleoapp.com/)
|
|
79
|
+
|
|
80
|
+
## Terms and License
|
|
81
|
+
|
|
82
|
+
- Released under the [GPL](https://www.gnu.org/licenses/gpl-3.0.html).
|
|
83
|
+
- Copyright 2024 [Cruip](https://cruip.com/).
|
|
84
|
+
- Use it for personal and commercial projects, but please don’t republish, redistribute, or resell the template.
|
|
85
|
+
- Attribution is not required, although it is really appreciated.
|
|
86
|
+
|
|
87
|
+
## About Us
|
|
88
|
+
|
|
89
|
+
We're an Italian developer/designer duo creating high-quality design/code resources for developers, makers, and startups.
|
|
90
|
+
|
|
91
|
+
## Stay in the loop
|
|
92
|
+
|
|
93
|
+
If you would like to know when we release new resources, you can follow [@pacovitiello](https://x.com/pacovitiello) and [@DavidePacilio](https://x.com/DavidePacilio) on X, or you can subscribe to our [newsletter](https://cruip.com/newsletter/).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import PageIllustration from "@/components/page-illustration";
|
|
2
|
+
|
|
3
|
+
export default function AuthLayout({
|
|
4
|
+
children,
|
|
5
|
+
}: {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
}) {
|
|
8
|
+
return (
|
|
9
|
+
<main className="relative flex grow flex-col">
|
|
10
|
+
<PageIllustration multiple />
|
|
11
|
+
|
|
12
|
+
{children}
|
|
13
|
+
</main>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const metadata = {
|
|
2
|
+
title: "Reset Password - Open PRO",
|
|
3
|
+
description: "Page description",
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
import Link from "next/link";
|
|
7
|
+
|
|
8
|
+
export default function ResetPassword() {
|
|
9
|
+
return (
|
|
10
|
+
<section>
|
|
11
|
+
<div className="mx-auto max-w-6xl px-4 sm:px-6">
|
|
12
|
+
<div className="py-12 md:py-20">
|
|
13
|
+
{/* Section header */}
|
|
14
|
+
<div className="pb-12 text-center">
|
|
15
|
+
<h1 className="animate-[gradient_6s_linear_infinite] bg-[linear-gradient(to_right,var(--color-gray-200),var(--color-indigo-200),var(--color-gray-50),var(--color-indigo-300),var(--color-gray-200))] bg-[length:200%_auto] bg-clip-text font-nacelle text-3xl font-semibold text-transparent md:text-4xl">
|
|
16
|
+
Reset your password
|
|
17
|
+
</h1>
|
|
18
|
+
</div>
|
|
19
|
+
{/* Contact form */}
|
|
20
|
+
<form className="mx-auto max-w-[400px]">
|
|
21
|
+
<div>
|
|
22
|
+
<label
|
|
23
|
+
className="mb-1 block text-sm font-medium text-indigo-200/65"
|
|
24
|
+
htmlFor="email"
|
|
25
|
+
>
|
|
26
|
+
Email
|
|
27
|
+
</label>
|
|
28
|
+
<input
|
|
29
|
+
id="email"
|
|
30
|
+
type="email"
|
|
31
|
+
className="form-input w-full"
|
|
32
|
+
placeholder="Your email"
|
|
33
|
+
/>
|
|
34
|
+
</div>
|
|
35
|
+
<div className="mt-6">
|
|
36
|
+
<button className="btn w-full bg-linear-to-t from-indigo-600 to-indigo-500 bg-[length:100%_100%] bg-[bottom] text-white shadow-[inset_0px_1px_0px_0px_--theme(--color-white/.16)] hover:bg-[length:100%_150%]">
|
|
37
|
+
Reset Password
|
|
38
|
+
</button>
|
|
39
|
+
</div>
|
|
40
|
+
</form>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</section>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export const metadata = {
|
|
2
|
+
title: "Sign In - Open PRO",
|
|
3
|
+
description: "Page description",
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
import Link from "next/link";
|
|
7
|
+
|
|
8
|
+
export default function SignIn() {
|
|
9
|
+
return (
|
|
10
|
+
<section>
|
|
11
|
+
<div className="mx-auto max-w-6xl px-4 sm:px-6">
|
|
12
|
+
<div className="py-12 md:py-20">
|
|
13
|
+
{/* Section header */}
|
|
14
|
+
<div className="pb-12 text-center">
|
|
15
|
+
<h1 className="animate-[gradient_6s_linear_infinite] bg-[linear-gradient(to_right,var(--color-gray-200),var(--color-indigo-200),var(--color-gray-50),var(--color-indigo-300),var(--color-gray-200))] bg-[length:200%_auto] bg-clip-text font-nacelle text-3xl font-semibold text-transparent md:text-4xl">
|
|
16
|
+
Welcome back
|
|
17
|
+
</h1>
|
|
18
|
+
</div>
|
|
19
|
+
{/* Contact form */}
|
|
20
|
+
<form className="mx-auto max-w-[400px]">
|
|
21
|
+
<div className="space-y-5">
|
|
22
|
+
<div>
|
|
23
|
+
<label
|
|
24
|
+
className="mb-1 block text-sm font-medium text-indigo-200/65"
|
|
25
|
+
htmlFor="email"
|
|
26
|
+
>
|
|
27
|
+
Email
|
|
28
|
+
</label>
|
|
29
|
+
<input
|
|
30
|
+
id="email"
|
|
31
|
+
type="email"
|
|
32
|
+
className="form-input w-full"
|
|
33
|
+
placeholder="Your email"
|
|
34
|
+
/>
|
|
35
|
+
</div>
|
|
36
|
+
<div>
|
|
37
|
+
<div className="mb-1 flex items-center justify-between gap-3">
|
|
38
|
+
<label
|
|
39
|
+
className="block text-sm font-medium text-indigo-200/65"
|
|
40
|
+
htmlFor="password"
|
|
41
|
+
>
|
|
42
|
+
Password
|
|
43
|
+
</label>
|
|
44
|
+
<Link
|
|
45
|
+
className="text-sm text-gray-600 hover:underline"
|
|
46
|
+
href="/reset-password"
|
|
47
|
+
>
|
|
48
|
+
Forgot?
|
|
49
|
+
</Link>
|
|
50
|
+
</div>
|
|
51
|
+
<input
|
|
52
|
+
id="password"
|
|
53
|
+
type="password"
|
|
54
|
+
className="form-input w-full"
|
|
55
|
+
placeholder="Your password"
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
<div className="mt-6 space-y-5">
|
|
60
|
+
<button className="btn w-full bg-linear-to-t from-indigo-600 to-indigo-500 bg-[length:100%_100%] bg-[bottom] text-white shadow-[inset_0px_1px_0px_0px_--theme(--color-white/.16)] hover:bg-[length:100%_150%]">
|
|
61
|
+
Sign in
|
|
62
|
+
</button>
|
|
63
|
+
<div className="flex items-center gap-3 text-center text-sm italic text-gray-600 before:h-px before:flex-1 before:bg-linear-to-r before:from-transparent before:via-gray-400/25 after:h-px after:flex-1 after:bg-linear-to-r after:from-transparent after:via-gray-400/25">
|
|
64
|
+
or
|
|
65
|
+
</div>
|
|
66
|
+
<button className="btn relative w-full bg-linear-to-b from-gray-800 to-gray-800/60 bg-[length:100%_100%] bg-[bottom] text-gray-300 before:pointer-events-none before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-transparent before:[background:linear-gradient(to_right,var(--color-gray-800),var(--color-gray-700),var(--color-gray-800))_border-box] before:[mask-composite:exclude_!important] before:[mask:linear-gradient(white_0_0)_padding-box,_linear-gradient(white_0_0)] hover:bg-[length:100%_150%]">
|
|
67
|
+
Sign In with Google
|
|
68
|
+
</button>
|
|
69
|
+
</div>
|
|
70
|
+
</form>
|
|
71
|
+
{/* Bottom link */}
|
|
72
|
+
<div className="mt-6 text-center text-sm text-indigo-200/65">
|
|
73
|
+
Don't you have an account?{" "}
|
|
74
|
+
<Link className="font-medium text-indigo-500" href="/signup">
|
|
75
|
+
Sign Up
|
|
76
|
+
</Link>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</section>
|
|
81
|
+
);
|
|
82
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
export const metadata = {
|
|
2
|
+
title: "Sign Up - Open PRO",
|
|
3
|
+
description: "Page description",
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
import Link from "next/link";
|
|
7
|
+
|
|
8
|
+
export default function SignUp() {
|
|
9
|
+
return (
|
|
10
|
+
<section>
|
|
11
|
+
<div className="mx-auto max-w-6xl px-4 sm:px-6">
|
|
12
|
+
<div className="py-12 md:py-20">
|
|
13
|
+
{/* Section header */}
|
|
14
|
+
<div className="pb-12 text-center">
|
|
15
|
+
<h1 className="animate-[gradient_6s_linear_infinite] bg-[linear-gradient(to_right,var(--color-gray-200),var(--color-indigo-200),var(--color-gray-50),var(--color-indigo-300),var(--color-gray-200))] bg-[length:200%_auto] bg-clip-text font-nacelle text-3xl font-semibold text-transparent md:text-4xl">
|
|
16
|
+
Create an account
|
|
17
|
+
</h1>
|
|
18
|
+
</div>
|
|
19
|
+
{/* Contact form */}
|
|
20
|
+
<form className="mx-auto max-w-[400px]">
|
|
21
|
+
<div className="space-y-5">
|
|
22
|
+
<div>
|
|
23
|
+
<label
|
|
24
|
+
className="mb-1 block text-sm font-medium text-indigo-200/65"
|
|
25
|
+
htmlFor="name"
|
|
26
|
+
>
|
|
27
|
+
Name <span className="text-red-500">*</span>
|
|
28
|
+
</label>
|
|
29
|
+
<input
|
|
30
|
+
id="name"
|
|
31
|
+
type="text"
|
|
32
|
+
className="form-input w-full"
|
|
33
|
+
placeholder="Your full name"
|
|
34
|
+
required
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
<div>
|
|
38
|
+
<label
|
|
39
|
+
className="mb-1 block text-sm font-medium text-indigo-200/65"
|
|
40
|
+
htmlFor="name"
|
|
41
|
+
>
|
|
42
|
+
Company Name <span className="text-red-500">*</span>
|
|
43
|
+
</label>
|
|
44
|
+
<input
|
|
45
|
+
id="company"
|
|
46
|
+
type="text"
|
|
47
|
+
className="form-input w-full"
|
|
48
|
+
placeholder="Your company name"
|
|
49
|
+
required
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
<div>
|
|
53
|
+
<label
|
|
54
|
+
className="mb-1 block text-sm font-medium text-indigo-200/65"
|
|
55
|
+
htmlFor="email"
|
|
56
|
+
>
|
|
57
|
+
Work Email <span className="text-red-500">*</span>
|
|
58
|
+
</label>
|
|
59
|
+
<input
|
|
60
|
+
id="email"
|
|
61
|
+
type="email"
|
|
62
|
+
className="form-input w-full"
|
|
63
|
+
placeholder="Your work email"
|
|
64
|
+
/>
|
|
65
|
+
</div>
|
|
66
|
+
<div>
|
|
67
|
+
<label
|
|
68
|
+
className="block text-sm font-medium text-indigo-200/65"
|
|
69
|
+
htmlFor="password"
|
|
70
|
+
>
|
|
71
|
+
Password <span className="text-red-500">*</span>
|
|
72
|
+
</label>
|
|
73
|
+
<input
|
|
74
|
+
id="password"
|
|
75
|
+
type="password"
|
|
76
|
+
className="form-input w-full"
|
|
77
|
+
placeholder="Password (at least 10 characters)"
|
|
78
|
+
/>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<div className="mt-6 space-y-5">
|
|
82
|
+
<button className="btn w-full bg-linear-to-t from-indigo-600 to-indigo-500 bg-[length:100%_100%] bg-[bottom] text-white shadow-[inset_0px_1px_0px_0px_--theme(--color-white/.16)] hover:bg-[length:100%_150%]">
|
|
83
|
+
Register
|
|
84
|
+
</button>
|
|
85
|
+
<div className="flex items-center gap-3 text-center text-sm italic text-gray-600 before:h-px before:flex-1 before:bg-linear-to-r before:from-transparent before:via-gray-400/25 after:h-px after:flex-1 after:bg-linear-to-r after:from-transparent after:via-gray-400/25">
|
|
86
|
+
or
|
|
87
|
+
</div>
|
|
88
|
+
<button className="btn relative w-full bg-linear-to-b from-gray-800 to-gray-800/60 bg-[length:100%_100%] bg-[bottom] text-gray-300 before:pointer-events-none before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-transparent before:[background:linear-gradient(to_right,var(--color-gray-800),var(--color-gray-700),var(--color-gray-800))_border-box] before:[mask-composite:exclude_!important] before:[mask:linear-gradient(white_0_0)_padding-box,_linear-gradient(white_0_0)] hover:bg-[length:100%_150%]">
|
|
89
|
+
Sign In with Google
|
|
90
|
+
</button>
|
|
91
|
+
</div>
|
|
92
|
+
</form>
|
|
93
|
+
{/* Bottom link */}
|
|
94
|
+
<div className="mt-6 text-center text-sm text-indigo-200/65">
|
|
95
|
+
Already have an account?{" "}
|
|
96
|
+
<Link className="font-medium text-indigo-500" href="/signin">
|
|
97
|
+
Sign in
|
|
98
|
+
</Link>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</section>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
|
|
5
|
+
import AOS from "aos";
|
|
6
|
+
import "aos/dist/aos.css";
|
|
7
|
+
|
|
8
|
+
import Footer from "@/components/ui/footer";
|
|
9
|
+
|
|
10
|
+
export default function DefaultLayout({
|
|
11
|
+
children,
|
|
12
|
+
}: {
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
}) {
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
AOS.init({
|
|
17
|
+
once: true,
|
|
18
|
+
disable: "phone",
|
|
19
|
+
duration: 600,
|
|
20
|
+
easing: "ease-out-sine",
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<>
|
|
26
|
+
<main className="relative flex grow flex-col">{children}</main>
|
|
27
|
+
|
|
28
|
+
<Footer />
|
|
29
|
+
</>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const metadata = {
|
|
2
|
+
title: "AgentVibes - Bring Your Claude Code Sessions to Life",
|
|
3
|
+
description: "Professional text-to-speech narration for Claude Code with 150+ voices, multiple providers, and 30+ languages.",
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
import PageIllustration from "@/components/page-illustration";
|
|
7
|
+
import Hero from "@/components/hero-home";
|
|
8
|
+
import Features from "@/components/features";
|
|
9
|
+
import Cta from "@/components/cta";
|
|
10
|
+
|
|
11
|
+
export default function Home() {
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<PageIllustration />
|
|
15
|
+
<Hero />
|
|
16
|
+
<Features />
|
|
17
|
+
<Cta />
|
|
18
|
+
</>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* Custom AOS animations */
|
|
2
|
+
@media screen {
|
|
3
|
+
html:not(.no-js) body [data-aos="fade-up"] {
|
|
4
|
+
-webkit-transform: translate3d(0, 10px, 0);
|
|
5
|
+
transform: translate3d(0, 10px, 0);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
html:not(.no-js) body [data-aos="fade-down"] {
|
|
9
|
+
-webkit-transform: translate3d(0, -10px, 0);
|
|
10
|
+
transform: translate3d(0, -10px, 0);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
html:not(.no-js) body [data-aos="fade-right"] {
|
|
14
|
+
-webkit-transform: translate3d(-10px, 0, 0);
|
|
15
|
+
transform: translate3d(-10px, 0, 0);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
html:not(.no-js) body [data-aos="fade-left"] {
|
|
19
|
+
-webkit-transform: translate3d(10px, 0, 0);
|
|
20
|
+
transform: translate3d(10px, 0, 0);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
html:not(.no-js) body [data-aos="fade-up-right"] {
|
|
24
|
+
-webkit-transform: translate3d(-10px, 10px, 0);
|
|
25
|
+
transform: translate3d(-10px, 10px, 0);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
html:not(.no-js) body [data-aos="fade-up-left"] {
|
|
29
|
+
-webkit-transform: translate3d(10px, 10px, 0);
|
|
30
|
+
transform: translate3d(10px, 10px, 0);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
html:not(.no-js) body [data-aos="fade-down-right"] {
|
|
34
|
+
-webkit-transform: translate3d(-10px, -10px, 0);
|
|
35
|
+
transform: translate3d(-10px, -10px, 0);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
html:not(.no-js) body [data-aos="fade-down-left"] {
|
|
39
|
+
-webkit-transform: translate3d(10px, -10px, 0);
|
|
40
|
+
transform: translate3d(10px, -10px, 0);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
html:not(.no-js) body [data-aos="zoom-in-up"] {
|
|
44
|
+
-webkit-transform: translate3d(0, 10px, 0) scale(0.6);
|
|
45
|
+
transform: translate3d(0, 10px, 0) scale(0.6);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
html:not(.no-js) body [data-aos="zoom-in-down"] {
|
|
49
|
+
-webkit-transform: translate3d(0, -10px, 0) scale(0.6);
|
|
50
|
+
transform: translate3d(0, -10px, 0) scale(0.6);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
html:not(.no-js) body [data-aos="zoom-in-right"] {
|
|
54
|
+
-webkit-transform: translate3d(-10px, 0, 0) scale(0.6);
|
|
55
|
+
transform: translate3d(-10px, 0, 0) scale(0.6);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
html:not(.no-js) body [data-aos="zoom-in-left"] {
|
|
59
|
+
-webkit-transform: translate3d(10px, 0, 0) scale(0.6);
|
|
60
|
+
transform: translate3d(10px, 0, 0) scale(0.6);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
html:not(.no-js) body [data-aos="zoom-out-up"] {
|
|
64
|
+
-webkit-transform: translate3d(0, 10px, 0) scale(1.2);
|
|
65
|
+
transform: translate3d(0, 10px, 0) scale(1.2);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
html:not(.no-js) body [data-aos="zoom-out-down"] {
|
|
69
|
+
-webkit-transform: translate3d(0, -10px, 0) scale(1.2);
|
|
70
|
+
transform: translate3d(0, -10px, 0) scale(1.2);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
html:not(.no-js) body [data-aos="zoom-out-right"] {
|
|
74
|
+
-webkit-transform: translate3d(-10px, 0, 0) scale(1.2);
|
|
75
|
+
transform: translate3d(-10px, 0, 0) scale(1.2);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
html:not(.no-js) body [data-aos="zoom-out-left"] {
|
|
79
|
+
-webkit-transform: translate3d(10px, 0, 0) scale(1.2);
|
|
80
|
+
transform: translate3d(10px, 0, 0) scale(1.2);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* Buttons */
|
|
2
|
+
.btn,
|
|
3
|
+
.btn-sm {
|
|
4
|
+
@apply inline-flex items-center justify-center whitespace-nowrap rounded-lg text-sm font-medium transition-all;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.btn {
|
|
8
|
+
@apply px-4 py-[11px];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.btn-sm {
|
|
12
|
+
@apply px-3 py-[7px];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Forms */
|
|
16
|
+
input[type='search']::-webkit-search-decoration,
|
|
17
|
+
input[type='search']::-webkit-search-cancel-button,
|
|
18
|
+
input[type='search']::-webkit-search-results-button,
|
|
19
|
+
input[type='search']::-webkit-search-results-decoration {
|
|
20
|
+
-webkit-appearance: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.form-input,
|
|
24
|
+
.form-textarea,
|
|
25
|
+
.form-multiselect,
|
|
26
|
+
.form-select,
|
|
27
|
+
.form-checkbox,
|
|
28
|
+
.form-radio {
|
|
29
|
+
@apply border border-gray-700 bg-gray-900/50 focus:border-gray-600 focus:ring-0 focus:ring-offset-0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.form-input,
|
|
33
|
+
.form-textarea,
|
|
34
|
+
.form-multiselect,
|
|
35
|
+
.form-select {
|
|
36
|
+
@apply rounded-lg px-4 py-2.5 text-sm text-gray-200;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.form-input,
|
|
40
|
+
.form-textarea {
|
|
41
|
+
@apply placeholder-gray-600;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.form-select {
|
|
45
|
+
@apply pr-10;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.form-checkbox,
|
|
49
|
+
.form-radio {
|
|
50
|
+
@apply text-indigo-500;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.form-checkbox {
|
|
54
|
+
@apply rounded-xs;
|
|
55
|
+
}
|