@windrun-huaiin/diaomao 1.0.0
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/.eslintrc.json +26 -0
- package/LICENSE +21 -0
- package/components.json +20 -0
- package/dev-scripts.config.json +25 -0
- package/messages/en.json +267 -0
- package/next-env.d.ts +5 -0
- package/package.json +114 -0
- package/postcss.config.mjs +8 -0
- package/public/0.webp +0 -0
- package/public/1.webp +0 -0
- package/public/2.webp +0 -0
- package/public/3.webp +0 -0
- package/public/4.webp +0 -0
- package/public/5.webp +0 -0
- package/public/6.webp +0 -0
- package/public/banner.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-180x180.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon-512x512.png +0 -0
- package/public/favicon-base(75x75).png +0 -0
- package/public/favicon.ico +0 -0
- package/public/pi-icon.png +0 -0
- package/public/pi-icon.svg +5 -0
- package/public/shared/img/default.webp +0 -0
- package/src/app/[locale]/(clerk)/layout.tsx +52 -0
- package/src/app/[locale]/(clerk)/sign-in/[[...sign-in]]/page.tsx +14 -0
- package/src/app/[locale]/(clerk)/sign-up/[[...sign-up]]/page.tsx +14 -0
- package/src/app/[locale]/(clerk)/waitlist/[[...waitlist]]/page.tsx +14 -0
- package/src/app/[locale]/(home)/[...catchAll]/page.tsx +17 -0
- package/src/app/[locale]/(home)/blog/[[...slug]]/page.tsx +22 -0
- package/src/app/[locale]/(home)/blog/layout.tsx +18 -0
- package/src/app/[locale]/(home)/layout.tsx +50 -0
- package/src/app/[locale]/(home)/legal/[[...slug]]/page.tsx +20 -0
- package/src/app/[locale]/(home)/legal/layout.tsx +19 -0
- package/src/app/[locale]/(home)/page.tsx +20 -0
- package/src/app/[locale]/globals.css +7 -0
- package/src/app/[locale]/layout.config.tsx +53 -0
- package/src/app/[locale]/layout.tsx +76 -0
- package/src/app/[locale]/loading.tsx +4 -0
- package/src/app/api/blog/llm-content/route.ts +26 -0
- package/src/app/api/legal/llm-content/route.ts +26 -0
- package/src/app/robots.ts +12 -0
- package/src/app/sitemap.ts +22 -0
- package/src/components/hero.tsx +46 -0
- package/src/components/mdx-components.tsx +148 -0
- package/src/i18n.ts +24 -0
- package/src/lib/appConfig.ts +12 -0
- package/src/lib/price-config.ts +14 -0
- package/src/lib/site-config.ts +3 -0
- package/src/lib/source-blog.ts +11 -0
- package/src/lib/source-legal.ts +11 -0
- package/src/mdx/blog/index.mdx +15 -0
- package/src/mdx/blog/ioc.mdx +14 -0
- package/src/mdx/blog/meta.json +8 -0
- package/src/mdx/blog/why-docs.mdx +537 -0
- package/src/mdx/legal/index.mdx +18 -0
- package/src/mdx/legal/meta.json +7 -0
- package/src/mdx/legal/privacy.mdx +155 -0
- package/src/mdx/legal/terms.mdx +102 -0
- package/src/middleware.ts +47 -0
- package/tsconfig.json +41 -0
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"next/core-web-vitals",
|
|
4
|
+
"eslint:recommended",
|
|
5
|
+
"plugin:@typescript-eslint/recommended"
|
|
6
|
+
],
|
|
7
|
+
"parser": "@typescript-eslint/parser",
|
|
8
|
+
"plugins": [
|
|
9
|
+
"@typescript-eslint",
|
|
10
|
+
"unused-imports"
|
|
11
|
+
],
|
|
12
|
+
"rules": {
|
|
13
|
+
"no-unused-vars": "off",
|
|
14
|
+
"@typescript-eslint/no-unused-vars": "off",
|
|
15
|
+
"unused-imports/no-unused-imports": "error",
|
|
16
|
+
"unused-imports/no-unused-vars": [
|
|
17
|
+
"error",
|
|
18
|
+
{
|
|
19
|
+
"vars": "all",
|
|
20
|
+
"varsIgnorePattern": "^_",
|
|
21
|
+
"args": "after-used",
|
|
22
|
+
"argsIgnorePattern": "^_"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 D8ger
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/components.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"style": "default",
|
|
4
|
+
"rsc": true,
|
|
5
|
+
"tsx": true,
|
|
6
|
+
"tailwind": {
|
|
7
|
+
"config": "tailwind.config.ts",
|
|
8
|
+
"css": "src/app/[locale]/globals.css",
|
|
9
|
+
"baseColor": "neutral",
|
|
10
|
+
"cssVariables": true,
|
|
11
|
+
"prefix": ""
|
|
12
|
+
},
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@/components",
|
|
15
|
+
"utils": "@/lib/utils",
|
|
16
|
+
"ui": "@/components/ui",
|
|
17
|
+
"lib": "@/lib"
|
|
18
|
+
},
|
|
19
|
+
"iconLibrary": "lucide"
|
|
20
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"i18n": {
|
|
3
|
+
"locales": ["en", "zh"],
|
|
4
|
+
"defaultLocale": "en",
|
|
5
|
+
"messageRoot": "messages"
|
|
6
|
+
},
|
|
7
|
+
"scan": {
|
|
8
|
+
"include": ["src/**/*.{tsx,ts,jsx,js}"],
|
|
9
|
+
"exclude": ["src/**/*.test.ts", "src/**/*.test.tsx", "src/**/*.d.ts", "node_modules/**"]
|
|
10
|
+
},
|
|
11
|
+
"blog": {
|
|
12
|
+
"mdxDir": "src/mdx/blog",
|
|
13
|
+
"outputFile": "index.mdx",
|
|
14
|
+
"metaFile": "meta.json",
|
|
15
|
+
"iocSlug": "ioc",
|
|
16
|
+
"prefix": "blog"
|
|
17
|
+
},
|
|
18
|
+
"output": {
|
|
19
|
+
"logDir": "logs",
|
|
20
|
+
"verbose": false
|
|
21
|
+
},
|
|
22
|
+
"architectureConfig": {
|
|
23
|
+
".": "Diaomao Project"
|
|
24
|
+
}
|
|
25
|
+
}
|
package/messages/en.json
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
{
|
|
2
|
+
"home": {
|
|
3
|
+
"title": "Re8ger",
|
|
4
|
+
"slug": "Rethink | Redefine | Rebuild",
|
|
5
|
+
"banner": "Rethink | Redefine | Rebuild",
|
|
6
|
+
"webTitle": "Reve Image Directory - Showcase Beautiful Images & Tips",
|
|
7
|
+
"webDescription": "Discover stunning AI-generated images and learn expert tips for creating beautiful visuals with Reve Image's powerful text-to-image technology.",
|
|
8
|
+
"keywords": "AI image generation, text-to-image, digital art, creative tools, Reve Image, free image generation"
|
|
9
|
+
},
|
|
10
|
+
"hero": {
|
|
11
|
+
"mainTitle": "Create Stunning Images with",
|
|
12
|
+
"mainEyesOn": "Reve Image",
|
|
13
|
+
"description": "Transform your ideas into breathtaking visuals with Reve Image's AI-powered image generation. Unleash your creativity with the cutting-edge technology.",
|
|
14
|
+
"button": "Get Started",
|
|
15
|
+
"about": "Enjoy 20 free images daily with Reve Image",
|
|
16
|
+
"heroImageAlt": "Reve Image AI-generated artwork showcasing the power of the platform"
|
|
17
|
+
},
|
|
18
|
+
"usage": {
|
|
19
|
+
"title": "How to use",
|
|
20
|
+
"eyesOn": "Newspaper Template",
|
|
21
|
+
"description": "",
|
|
22
|
+
"steps": [
|
|
23
|
+
{
|
|
24
|
+
"title": "Select a Template",
|
|
25
|
+
"description": "Click on your favorite template on the left side to get started.",
|
|
26
|
+
"iconKey": "MousePointerClick"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"title": "Customize Your Content",
|
|
30
|
+
"description": "Edit text directly in the text area and hover over images to upload new ones.",
|
|
31
|
+
"iconKey": "Pencil"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"title": "Download & Share",
|
|
35
|
+
"description": "Download as an image, PDF, or share to X, Instagram, etc",
|
|
36
|
+
"iconKey": "Download"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"faq": {
|
|
41
|
+
"title": "Frequently Asked Questions",
|
|
42
|
+
"description": "",
|
|
43
|
+
"items":[
|
|
44
|
+
{
|
|
45
|
+
"question": "What is this newspaper template website?",
|
|
46
|
+
"answer": "This newspaper template website allows you to create and customize professional-looking newspapers using easy-to-use templates. You can edit text, upload images, and download or share your creations."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"question": "Is the newspaper template website free to use?",
|
|
50
|
+
"answer": "Yes, our newspaper template website is completely free! Access all features—templates, editing tools, and watermark-free downloads—without any cost or hidden fees. Perfect for commercial use!"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"question": "How do I edit the text and images?",
|
|
54
|
+
"answer": "To edit text, simply click into the text field and start typing your content. To change images, hover over the image placeholder and select the option to upload a new image from your device."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"question": "Do I need design experience to use the newspaper template website?",
|
|
58
|
+
"answer": "No design experience is required! Our intuitive interface and pre-designed templates make it easy for anyone to create a polished newspaper."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"question": "Can I preview my newspaper before downloading?",
|
|
62
|
+
"answer": "Yes, you can see real-time updates as you edit. The preview feature lets you review your newspaper to ensure it looks perfect before saving or sharing."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"question": "What file formats can I download my newspaper in?",
|
|
66
|
+
"answer": "You can download your newspaper as a high-quality PDF, PNG, JPG, WEBP, or SVG, suitable for printing or digital sharing."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"question": "Can I save my work and come back to it later?",
|
|
70
|
+
"answer": "Currently, you can complete your newspaper in one session. Future updates may include a save feature."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"question": "Are there limits to how many newspapers I can create?",
|
|
74
|
+
"answer": "No limits! You can create as many newspapers as you like, all for free."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"question": "Can I use my own fonts or colors?",
|
|
78
|
+
"answer": "You can use pre-set fonts and color schemes in our free online newspaper templates for a professional look. Custom font uploads may be available in future updates."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"question": "How can I share my finished newspaper?",
|
|
82
|
+
"answer": "After completing your newspaper, you can download it as a PDF, PNG, JPG, WEBP, or SVG and share it via email, social media, or print it for physical distribution."
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"pricePlan": {
|
|
87
|
+
"title": "Choose Your Plan",
|
|
88
|
+
"subtitle": "Get the best of Raphael AI with faster generation and commercial usage",
|
|
89
|
+
"billingSwitch": {
|
|
90
|
+
"options": [
|
|
91
|
+
{ "key": "monthly", "name": "Monthly", "unit": "/month", "discountText": "", "subTitle": "Billed Monthly" },
|
|
92
|
+
{ "key": "yearly", "name": "Yearly", "unit": "/month", "discountText": "Save {percent}%", "subTitle": "Billed Annually" }
|
|
93
|
+
],
|
|
94
|
+
"defaultKey": "yearly"
|
|
95
|
+
},
|
|
96
|
+
"plans": [
|
|
97
|
+
{
|
|
98
|
+
"key": "free",
|
|
99
|
+
"title": "Hobby Version",
|
|
100
|
+
"showBillingSubTitle": false,
|
|
101
|
+
"features": [
|
|
102
|
+
{ "description": "Access to all templates" },
|
|
103
|
+
{ "description": "Unlimited editing and customization"},
|
|
104
|
+
{ "description": "Download in multiple formats" },
|
|
105
|
+
{ "description": "No watermarks" },
|
|
106
|
+
{ "description": "No registration required" }
|
|
107
|
+
],
|
|
108
|
+
"button": { "text": "Get started" }
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"key": "premium",
|
|
112
|
+
"title": "Premium Version",
|
|
113
|
+
"showBillingSubTitle": true,
|
|
114
|
+
"features": [
|
|
115
|
+
{ "description": "All features available", "tag": "Hobby Version" },
|
|
116
|
+
{ "description": "UnLimited for Export/Import" },
|
|
117
|
+
{ "description": "Limited 200 credits for AI-text", "tooltip": "1 credit = 1 AI conversation" }
|
|
118
|
+
],
|
|
119
|
+
"button": { "text": "Upgrade to Premium" }
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"key": "ultimate",
|
|
123
|
+
"title": "Ultimate Version",
|
|
124
|
+
"showBillingSubTitle": true,
|
|
125
|
+
"titleTags": ["Most Popular"],
|
|
126
|
+
"features": [
|
|
127
|
+
{ "description": "All features available", "tag": "Premium Version" },
|
|
128
|
+
{ "description": "Limited 500 credits AI-text", "tooltip": "1 credit = 1 AI conversation" },
|
|
129
|
+
{ "description": "Early access to new features" },
|
|
130
|
+
{ "description": "Team Support", "tooltip": "You can get our help with priority service support" }
|
|
131
|
+
],
|
|
132
|
+
"button": { "text": "Upgrade to Ultimate" }
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
"features": {
|
|
137
|
+
"title": "Why Choose",
|
|
138
|
+
"eyesOn": "Reve Image",
|
|
139
|
+
"description": "Create stunning newspapers with our newspaper template website! Here's why you'll love it.",
|
|
140
|
+
"items": [
|
|
141
|
+
{
|
|
142
|
+
"title": "High-Quality Output",
|
|
143
|
+
"description": "Reve Image produces stunning, detailed images that rival professional artwork.",
|
|
144
|
+
"iconKey": "Sparkles"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"title": "20 Free Images Daily",
|
|
148
|
+
"description": "Enjoy a generous daily allowance of 20 free images with your Reve Image account.",
|
|
149
|
+
"iconKey": "Gift"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"title": "Intuitive Prompting",
|
|
153
|
+
"description": "The advanced AI understands natural language, making it easy to describe your vision.",
|
|
154
|
+
"iconKey": "MessageCircleMore"
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"gallery": {
|
|
159
|
+
"titleL": "Gallery of",
|
|
160
|
+
"eyesOn": "Reve Image",
|
|
161
|
+
"titleR": "Creations",
|
|
162
|
+
"description": "Explore the incredible possibilities with Reve Image. Each image below was generated using the AI technology with the accompanying prompt.",
|
|
163
|
+
"button": "Create Your Own Images",
|
|
164
|
+
"prompts": [
|
|
165
|
+
"A futuristic cityscape with flying vehicles and neon lights",
|
|
166
|
+
"A serene mountain landscape at sunset with a lake reflection",
|
|
167
|
+
"A magical forest with glowing plants and mystical creatures",
|
|
168
|
+
"An underwater scene with colorful coral reefs and exotic fish",
|
|
169
|
+
"A steampunk-inspired mechanical dragon with brass gears",
|
|
170
|
+
"A cosmic scene with planets, nebulae, and a spaceship"
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
"tips": {
|
|
174
|
+
"title": "Tips for Getting the Best Results with",
|
|
175
|
+
"eyesOn": "Reve Image",
|
|
176
|
+
"sections": [
|
|
177
|
+
{
|
|
178
|
+
"title": "Be Specific in Your Prompts",
|
|
179
|
+
"description": "When using Reve Image, the more specific your prompt, the better the results. Include details about style, lighting, mood, and composition to guide the AI toward your vision."
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"title": "Experiment with Different Styles",
|
|
183
|
+
"description": "Reve Image can generate images in various artistic styles. Try adding style descriptors like \"oil painting,\" \"digital art,\" \"photorealistic,\" or \"watercolor\" to your prompts."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"title": "Use Reference Artists",
|
|
187
|
+
"description": "Mentioning specific artists in your Reve Image prompts can help achieve particular aesthetics. For example, \"in the style of Van Gogh\" or \"like a Wes Anderson film.\""
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"title": "Iterate and Refine",
|
|
191
|
+
"description": "Don't be afraid to generate multiple images with Reve Image and refine your prompt based on the results. Each iteration brings you closer to your perfect image."
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"title": "Consider Composition Elements",
|
|
195
|
+
"description": "Include composition details in your Reve Image prompts, such as \"close-up,\" \"wide shot,\" \"from above,\" or \"symmetrical composition\" to control the framing."
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"title": "Maximize Your Daily Allowance",
|
|
199
|
+
"description": "With Reve Image's generous 20 free images per day, plan your creative sessions to make the most of this allowance. Save your best results to build a personal inspiration library."
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
"seoContent": {
|
|
204
|
+
"title": "Mastering AI Image Generation with",
|
|
205
|
+
"eyesOn": "Reve Image",
|
|
206
|
+
"description": "Online & Free & Editable & Professional",
|
|
207
|
+
"intro": "Reve Image represents the cutting edge of AI image generation technology, offering users the ability to transform text descriptions into stunning visual content. Whether you're a designer seeking inspiration, a marketer creating content, or an artist exploring new mediums, Reve Image provides the tools to bring your imagination to life.",
|
|
208
|
+
"sections": [
|
|
209
|
+
{
|
|
210
|
+
"title": "Understanding How Reve Image Works",
|
|
211
|
+
"content": "When you enter a prompt, Reve Image analyzes the semantic meaning and generates corresponding imagery that matches your description. This process happens in seconds, allowing for rapid iteration and experimentation."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"title": "Crafting Effective Prompts for Reve Image",
|
|
215
|
+
"content": "The key to getting exceptional results from Reve Image lies in how you structure your prompts. Begin with a clear subject, then add modifiers for style, mood, lighting, and composition. For example, instead of simply writing \"a mountain,\" try \"a majestic snow-capped mountain at golden hour, with dramatic clouds, photorealistic style.\" The Reve Image AI responds particularly well to descriptive adjectives and specific visual references."
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"title": "Leveraging Reve Image for Different Creative Needs",
|
|
219
|
+
"content": "Reve Image excels across various use cases. For marketing professionals, it can generate eye-catching social media graphics or conceptual product visualizations. Designers can use Reve Image to quickly prototype ideas or create mood boards. Writers and storytellers might employ Reve Image to visualize characters and settings. The versatility of Reve Image makes it an invaluable tool across creative disciplines."
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"title": "Maximizing Your Free Daily Images with Reve Image",
|
|
223
|
+
"content": "With Reve Image offering 20 free image generations daily, developing a strategic approach to your creative process becomes important. Consider starting with broader concepts and gradually refining your prompts based on the results. Save promising images and note the effective elements in your prompts. This methodical approach helps you make the most of Reve Image's generous free tier while continuously improving your results."
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"title": "Combining Reve Image with Other Creative Tools",
|
|
227
|
+
"content": "While Reve Image produces impressive standalone images, its output can also serve as a starting point for further refinement. Many creators use Reve Image to generate initial concepts, then bring these images into editing software for additional customization. This hybrid workflow combines the imaginative power of Reve Image's AI with the precision of human-guided editing."
|
|
228
|
+
}
|
|
229
|
+
],
|
|
230
|
+
"conclusion": "As AI image generation continues to evolve, Reve Image remains at the forefront, constantly improving its capabilities and offering users new ways to express their creativity. By understanding how to effectively communicate with the Reve Image AI through well-crafted prompts, you can unlock extraordinary visual possibilities and transform how you approach creative projects."
|
|
231
|
+
},
|
|
232
|
+
"cta": {
|
|
233
|
+
"title": "Ready to Create with",
|
|
234
|
+
"eyesOn": "Reve Image",
|
|
235
|
+
"description1": "Start generating beautiful images today with your 20 free daily creations.",
|
|
236
|
+
"description2": "No credit card required.",
|
|
237
|
+
"button": "Get Started Now",
|
|
238
|
+
"url": "https://preview.reve.art/"
|
|
239
|
+
},
|
|
240
|
+
"languageDetection": {
|
|
241
|
+
"title": "Language Detection",
|
|
242
|
+
"description": "Would you like to switch to",
|
|
243
|
+
"close": "No, thanks",
|
|
244
|
+
"changeAction": "Yes, switch"
|
|
245
|
+
},
|
|
246
|
+
"footer": {
|
|
247
|
+
"company": "WindRun · Huaiin",
|
|
248
|
+
"copyright": "Copyright © {year} {name} All rights reserved.",
|
|
249
|
+
"privacy": "Privacy Policy",
|
|
250
|
+
"terms": "Terms of Service",
|
|
251
|
+
"dpa": "Data Protection Agreement",
|
|
252
|
+
"sitemap": "Sitemap",
|
|
253
|
+
"contactUs": "Contact Us",
|
|
254
|
+
"email": "xyb5to0zcy@gmail.com",
|
|
255
|
+
"thanks": "Thanks to"
|
|
256
|
+
},
|
|
257
|
+
"clerk": {
|
|
258
|
+
"signIn": "Sign In",
|
|
259
|
+
"signUp": "Sign Up"
|
|
260
|
+
},
|
|
261
|
+
"linkPreview": {
|
|
262
|
+
"blog": "Blog",
|
|
263
|
+
"showcase": "Showcase",
|
|
264
|
+
"legal": "Legal",
|
|
265
|
+
"docs": "Docs"
|
|
266
|
+
}
|
|
267
|
+
}
|
package/next-env.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@windrun-huaiin/diaomao",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"keywords": [
|
|
9
|
+
"fumadocs",
|
|
10
|
+
"clerk",
|
|
11
|
+
"nextjs",
|
|
12
|
+
"template",
|
|
13
|
+
"diaomao",
|
|
14
|
+
"react"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@clerk/localizations": "^3.16.0",
|
|
18
|
+
"@clerk/nextjs": "^6.19.4",
|
|
19
|
+
"@clerk/themes": "^2.2.45",
|
|
20
|
+
"@clerk/types": "^4.59.0",
|
|
21
|
+
"@hookform/resolvers": "^3.10.0",
|
|
22
|
+
"@radix-ui/react-alert-dialog": "^1.1.13",
|
|
23
|
+
"@radix-ui/react-dropdown-menu": "^2.1.14",
|
|
24
|
+
"@radix-ui/react-label": "^2.1.6",
|
|
25
|
+
"@radix-ui/react-slot": "^1.2.2",
|
|
26
|
+
"@tailwindcss/typography": "latest",
|
|
27
|
+
"@types/mdx": "^2.0.13",
|
|
28
|
+
"autoprefixer": "^10.4.21",
|
|
29
|
+
"class-variance-authority": "^0.7.1",
|
|
30
|
+
"clsx": "^2.1.1",
|
|
31
|
+
"date-fns": "2.30.0",
|
|
32
|
+
"fumadocs-core": "15.3.3",
|
|
33
|
+
"fumadocs-mdx": "11.6.3",
|
|
34
|
+
"fumadocs-ui": "15.3.3",
|
|
35
|
+
"katex": "^0.16.22",
|
|
36
|
+
"lucide-react": "^0.525.0",
|
|
37
|
+
"mermaid": "^11.6.0",
|
|
38
|
+
"next": "15.3.2",
|
|
39
|
+
"next-intl": "^3.26.5",
|
|
40
|
+
"next-themes": "^0.4.6",
|
|
41
|
+
"react": "19.1.0",
|
|
42
|
+
"react-dom": "19.1.0",
|
|
43
|
+
"react-medium-image-zoom": "^5.2.14",
|
|
44
|
+
"rehype-katex": "^7.0.1",
|
|
45
|
+
"remark": "^15.0.1",
|
|
46
|
+
"remark-gfm": "^4.0.1",
|
|
47
|
+
"remark-math": "^6.0.0",
|
|
48
|
+
"remark-mdx": "^3.1.0",
|
|
49
|
+
"shiki": "^3.4.2",
|
|
50
|
+
"tailwind-merge": "^3.3.0",
|
|
51
|
+
"tailwindcss-animate": "^1.0.7",
|
|
52
|
+
"zod": "^3.24.4",
|
|
53
|
+
"@windrun-huaiin/base-ui": "^5.3.1",
|
|
54
|
+
"@windrun-huaiin/third-ui": "^5.9.3",
|
|
55
|
+
"@windrun-huaiin/lib": "^5.7.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@changesets/cli": "^2.29.5",
|
|
59
|
+
"@tailwindcss/cli": "^4.1.11",
|
|
60
|
+
"@tailwindcss/postcss": "^4.1.7",
|
|
61
|
+
"@types/hast": "^3.0.4",
|
|
62
|
+
"@types/node": "^22.15.18",
|
|
63
|
+
"@types/nprogress": "^0.2.3",
|
|
64
|
+
"@types/react": "19.1.2",
|
|
65
|
+
"@types/react-dom": "19.1.3",
|
|
66
|
+
"@types/react-medium-image-zoom": "^3.0.3",
|
|
67
|
+
"@typescript-eslint/parser": "^8.32.1",
|
|
68
|
+
"eslint": "^9.27.0",
|
|
69
|
+
"eslint-config-next": "15.3.2",
|
|
70
|
+
"eslint-plugin-unused-imports": "^4.1.4",
|
|
71
|
+
"fast-glob": "^3.3.3",
|
|
72
|
+
"nprogress": "^0.2.0",
|
|
73
|
+
"postcss": "^8.5.3",
|
|
74
|
+
"remark-frontmatter": "^5.0.0",
|
|
75
|
+
"tailwindcss": "^4.1.7",
|
|
76
|
+
"ts-node": "^10.9.2",
|
|
77
|
+
"typescript": "^5.8.3",
|
|
78
|
+
"ts-morph": "25.0.1",
|
|
79
|
+
"unist-util-visit": "^5.0.0",
|
|
80
|
+
"@windrun-huaiin/dev-scripts": "6.6.0"
|
|
81
|
+
},
|
|
82
|
+
"files": [
|
|
83
|
+
"src",
|
|
84
|
+
"public",
|
|
85
|
+
"messages",
|
|
86
|
+
".eslintrc.json",
|
|
87
|
+
"components.json",
|
|
88
|
+
"dev-scripts.config.json",
|
|
89
|
+
"LICENSE",
|
|
90
|
+
"next-env.d.ts",
|
|
91
|
+
"next.config.mjs",
|
|
92
|
+
"postcss.config.mjs",
|
|
93
|
+
"tailwind.config.ts",
|
|
94
|
+
"tsconfig.json",
|
|
95
|
+
"!**/scripts/**",
|
|
96
|
+
"!**/*.test.{js,ts}",
|
|
97
|
+
"!**/*.log"
|
|
98
|
+
],
|
|
99
|
+
"scripts": {
|
|
100
|
+
"postinstall": "fumadocs-mdx",
|
|
101
|
+
"predev": "pnpm run lint",
|
|
102
|
+
"dev": "next dev --turbopack",
|
|
103
|
+
"build": "pnpm generate-blog-index && next build",
|
|
104
|
+
"build:dev": "pnpm generate-blog-index && next build",
|
|
105
|
+
"build:prod": "next build",
|
|
106
|
+
"start": "next start",
|
|
107
|
+
"lint": "next lint",
|
|
108
|
+
"generate-blog-index": "dev-scripts generate-blog-index -v",
|
|
109
|
+
"check-translations": "dev-scripts check-translations -v",
|
|
110
|
+
"clean-translations": "dev-scripts clean-translations -v",
|
|
111
|
+
"remove-translations": "dev-scripts clean-translations --remove -v",
|
|
112
|
+
"whoareyou": "dev-scripts generate-nextjs-architecture -v"
|
|
113
|
+
}
|
|
114
|
+
}
|
package/public/0.webp
ADDED
|
Binary file
|
package/public/1.webp
ADDED
|
Binary file
|
package/public/2.webp
ADDED
|
Binary file
|
package/public/3.webp
ADDED
|
Binary file
|
package/public/4.webp
ADDED
|
Binary file
|
package/public/5.webp
ADDED
|
Binary file
|
package/public/6.webp
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" >
|
|
2
|
+
<line x1="9" x2="9" y1="4" y2="20" fill="none" stroke="#AC62FD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
3
|
+
<path d="M4 7c0-1.7 1.3-3 3-3h13" fill="none" stroke="#AC62FD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
4
|
+
<path d="M18 20c-1.7 0-3-1.3-3-3V4" fill="none" stroke="#AC62FD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
5
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* MIT License
|
|
4
|
+
* Copyright (c) 2025 D8ger
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { baseOptions } from '@/app/[locale]/layout.config';
|
|
11
|
+
import { HomeLayout, type HomeLayoutProps } from 'fumadocs-ui/layouts/home';
|
|
12
|
+
import { FumaBannerSuit } from '@third-ui/fuma/mdx';
|
|
13
|
+
import { ReactNode } from 'react';
|
|
14
|
+
import { clerkPageBanner } from '@/lib/appConfig';
|
|
15
|
+
import { ClerkProviderClient } from '@third-ui/clerk';
|
|
16
|
+
|
|
17
|
+
async function homeOptions(locale: string): Promise<HomeLayoutProps>{
|
|
18
|
+
const resolvedBaseOptions = await baseOptions(locale);
|
|
19
|
+
return {
|
|
20
|
+
...resolvedBaseOptions,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default async function RootLayout({
|
|
25
|
+
params,
|
|
26
|
+
children,
|
|
27
|
+
}: {
|
|
28
|
+
params: Promise<{ locale: string }>;
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
}) {
|
|
31
|
+
const { locale } = await params;
|
|
32
|
+
const customeOptions = await homeOptions(locale);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<ClerkProviderClient locale={locale}>
|
|
36
|
+
<HomeLayout
|
|
37
|
+
{...customeOptions}
|
|
38
|
+
searchToggle={{
|
|
39
|
+
enabled: false,
|
|
40
|
+
}}
|
|
41
|
+
themeSwitch={{
|
|
42
|
+
enabled: true,
|
|
43
|
+
mode: 'light-dark-system',
|
|
44
|
+
}}
|
|
45
|
+
className={`dark:bg-neutral-950 dark:[--color-fd-background:var(--color-neutral-950)] pt-25 ${clerkPageBanner ? 'has-banner' : 'no-banner'}`}
|
|
46
|
+
>
|
|
47
|
+
<FumaBannerSuit showText={clerkPageBanner}/>
|
|
48
|
+
{children}
|
|
49
|
+
</HomeLayout>
|
|
50
|
+
</ClerkProviderClient>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* MIT License
|
|
4
|
+
* Copyright (c) 2025 D8ger
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
'use client';
|
|
11
|
+
|
|
12
|
+
import { createSignInPage } from '@third-ui/clerk';
|
|
13
|
+
|
|
14
|
+
export default createSignInPage();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* MIT License
|
|
4
|
+
* Copyright (c) 2025 D8ger
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
'use client';
|
|
11
|
+
|
|
12
|
+
import { createSignUpPage } from '@third-ui/clerk';
|
|
13
|
+
|
|
14
|
+
export default createSignUpPage();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* MIT License
|
|
4
|
+
* Copyright (c) 2025 D8ger
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
'use client';
|
|
11
|
+
|
|
12
|
+
import { createWaitlistPage } from '@third-ui/clerk';
|
|
13
|
+
|
|
14
|
+
export default createWaitlistPage();
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* MIT License
|
|
4
|
+
* Copyright (c) 2025 D8ger
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { NotFoundPage } from '@base-ui/components';
|
|
11
|
+
import { SiteIcon } from '@/lib/site-config';
|
|
12
|
+
|
|
13
|
+
export default function NotFound() {
|
|
14
|
+
return (
|
|
15
|
+
<NotFoundPage siteIcon={<SiteIcon />} />
|
|
16
|
+
);
|
|
17
|
+
}
|