checkpoint: before i18n implementation
This commit is contained in:
+4
-4
@@ -2,11 +2,11 @@ import type { Metadata } from "next"
|
||||
import { HeroSection, MissionSection, TeamSection, ValuesSection, CareersSection, SocialLinksSection } from "@/components/about"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "About",
|
||||
description: "Learn about DalCode's mission, team, and values. We're building the next generation of AI-powered developer tools.",
|
||||
title: "产品定位",
|
||||
description: "了解 DAL Code 的产品隐喻、核心能力、目标用户和平台方向。",
|
||||
openGraph: {
|
||||
title: "About DalCode",
|
||||
description: "Learn about DalCode's mission, team, and values.",
|
||||
title: "为什么是 DAL Code",
|
||||
description: "了解 DAL Code 的产品隐喻、核心能力、目标用户和平台方向。",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -15,12 +15,12 @@ export async function generateStaticParams() {
|
||||
export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||
const { slug } = await params
|
||||
const post = BLOG_POSTS.find((p) => p.slug === slug)
|
||||
if (!post) return { title: "Post Not Found" }
|
||||
if (!post) return { title: "文章未找到" }
|
||||
return {
|
||||
title: post.title,
|
||||
title: `${post.title} | DAL Code`,
|
||||
description: post.excerpt,
|
||||
openGraph: {
|
||||
title: post.title,
|
||||
title: `${post.title} | DAL Code`,
|
||||
description: post.excerpt,
|
||||
images: [{ url: post.image }],
|
||||
},
|
||||
@@ -73,12 +73,14 @@ export default async function BlogPostPage({ params }: Props) {
|
||||
<div className="mg-top-regular">
|
||||
<div className="inner-container _650px center">
|
||||
<div className="blog-post-rich-text w-richtext">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.</p>
|
||||
<h2>Key Insights</h2>
|
||||
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit.</p>
|
||||
<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.</p>
|
||||
<h2>Looking Ahead</h2>
|
||||
<p>Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
|
||||
{post.sections.map((section) => (
|
||||
<section key={section.title}>
|
||||
<h2>{section.title}</h2>
|
||||
{section.paragraphs.map((paragraph) => (
|
||||
<p key={paragraph}>{paragraph}</p>
|
||||
))}
|
||||
</section>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -86,7 +88,7 @@ export default async function BlogPostPage({ params }: Props) {
|
||||
<div className="inner-container _650px center text-center">
|
||||
<Link href="/blog" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>Back to all articles</div>
|
||||
<div>返回全部文章</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
|
||||
+4
-4
@@ -2,11 +2,11 @@ import type { Metadata } from "next"
|
||||
import { HeroSection, CtaSection, PostsGridSection } from "@/components/blog"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Blog",
|
||||
description: "Insights on AI, machine learning, and the future of software development from the DalCode team.",
|
||||
title: "产品洞察",
|
||||
description: "围绕 Intent-to-Code、Mission Mode、多模型路由和 Skills 平台的产品文章。",
|
||||
openGraph: {
|
||||
title: "DalCode Blog",
|
||||
description: "Insights on AI, machine learning, and the future of software development.",
|
||||
title: "DAL Code 产品洞察",
|
||||
description: "围绕 Intent-to-Code、Mission Mode、多模型路由和 Skills 平台的产品文章。",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
+16
-25
@@ -14,12 +14,12 @@ export async function generateStaticParams() {
|
||||
export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||
const { slug } = await params
|
||||
const career = CAREERS.find((c) => c.slug === slug)
|
||||
if (!career) return { title: "Position Not Found" }
|
||||
if (!career) return { title: "角色未找到" }
|
||||
return {
|
||||
title: career.title,
|
||||
title: `${career.title} | DAL Code`,
|
||||
description: career.description,
|
||||
openGraph: {
|
||||
title: `${career.title} - DalCode Careers`,
|
||||
title: `${career.title} | DAL Code`,
|
||||
description: career.description,
|
||||
},
|
||||
}
|
||||
@@ -54,31 +54,22 @@ export default async function CareerDetailPage({ params }: Props) {
|
||||
<div className="mg-top-regular">
|
||||
<div className="inner-container _650px center">
|
||||
<div className="blog-post-rich-text w-richtext">
|
||||
<h2>About the role</h2>
|
||||
<p>We are looking for a {career.title} to join our {career.department} team. In this role, you will work alongside world-class engineers and researchers to push the boundaries of what's possible with AI.</p>
|
||||
<h2>Responsibilities</h2>
|
||||
<h2>角色概述</h2>
|
||||
<p>{career.description}</p>
|
||||
<h2>你会负责什么</h2>
|
||||
<ul role="list">
|
||||
<li>Collaborate with cross-functional teams to design, develop, and deploy AI solutions</li>
|
||||
<li>Contribute to research and development of novel AI architectures and algorithms</li>
|
||||
<li>Write clean, maintainable, and well-tested code</li>
|
||||
<li>Participate in code reviews and contribute to engineering best practices</li>
|
||||
<li>Stay up-to-date with the latest developments in AI and machine learning</li>
|
||||
{career.responsibilities.map((item) => (
|
||||
<li key={item}>{item}</li>
|
||||
))}
|
||||
</ul>
|
||||
<h2>Requirements</h2>
|
||||
<h2>我们希望你具备</h2>
|
||||
<ul role="list">
|
||||
<li>Strong background in computer science, mathematics, or a related field</li>
|
||||
<li>Experience with modern AI/ML frameworks and tools</li>
|
||||
<li>Excellent problem-solving and communication skills</li>
|
||||
<li>Ability to work independently and as part of a team</li>
|
||||
</ul>
|
||||
<h2>What we offer</h2>
|
||||
<ul role="list">
|
||||
<li>Competitive salary and equity package</li>
|
||||
<li>Comprehensive health, dental, and vision insurance</li>
|
||||
<li>Flexible work arrangements</li>
|
||||
<li>Learning and development budget</li>
|
||||
<li>Regular team events and offsites</li>
|
||||
{career.requirements.map((item) => (
|
||||
<li key={item}>{item}</li>
|
||||
))}
|
||||
</ul>
|
||||
<h2>我们期待它带来的结果</h2>
|
||||
<p>{career.outcome}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -86,7 +77,7 @@ export default async function CareerDetailPage({ params }: Props) {
|
||||
<div className="inner-container _650px center text-center">
|
||||
<Link href="/careers" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>Back to all positions</div>
|
||||
<div>返回建设方向</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
|
||||
@@ -3,11 +3,11 @@ import Link from "next/link"
|
||||
import { CAREERS } from "@/lib/careers-data"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Careers",
|
||||
description: "Join our team and help shape the future of AI. Explore open positions at DalCode.",
|
||||
title: "建设中的角色",
|
||||
description: "DAL Code 当前重点建设方向,面向 Agent Engine、Developer Experience、Routing 与 Intent UX。",
|
||||
openGraph: {
|
||||
title: "Careers at DalCode",
|
||||
description: "Join our team and help shape the future of AI.",
|
||||
title: "DAL Code 建设中的角色",
|
||||
description: "DAL Code 当前重点建设方向,面向 Agent Engine、Developer Experience、Routing 与 Intent UX。",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ export default function CareersPage() {
|
||||
<div className="text-center">
|
||||
<div className="subtitle">Careers</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h1>Join our team</h1>
|
||||
<h1>当前重点建设方向</h1>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>We're looking for talented people to help us build the future of AI-powered development tools.</p>
|
||||
<p>这些不是模板岗位,而是 DAL Code 未来 12 个月最值得投入的产品与工程能力面。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,8 +2,8 @@ import type { Metadata } from "next"
|
||||
import Link from "next/link"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Coming Soon",
|
||||
description: "This page is coming soon. Stay tuned for updates.",
|
||||
title: "建设中 | DAL Code",
|
||||
description: "DAL Code 官网这部分内容还在补齐,路线图和更多产品细节会逐步上线。",
|
||||
}
|
||||
|
||||
export default function ComingSoonPage() {
|
||||
@@ -11,17 +11,20 @@ export default function ComingSoonPage() {
|
||||
<main className="section-small top overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div className="text-center" style={{ padding: "120px 0" }}>
|
||||
<div className="subtitle">Coming soon</div>
|
||||
<div className="subtitle">Roadmap</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h1>Under construction</h1>
|
||||
<h1>这部分内容还在持续建设中</h1>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>We're working on something exciting. Check back soon for updates.</p>
|
||||
<p>DAL Code 官网首版先把产品定位、核心能力和当前建设方向讲清楚,路线图与更多细节会分批补齐。</p>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>如果你想继续了解产品进展,建议先查看产品洞察,或直接联系团队沟通试用与企业方案。</p>
|
||||
</div>
|
||||
<div className="mg-top-24px">
|
||||
<Link href="/" className="primary-button w-inline-block">
|
||||
<Link href="/blog" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>Back to home</div>
|
||||
<div>查看产品洞察</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
@@ -32,6 +35,13 @@ export default function ComingSoonPage() {
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<Link href="/contact" className="tertiary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>联系 DAL Code 团队</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@ -2,11 +2,11 @@ import type { Metadata } from "next"
|
||||
import { HeroSection, FormSection, CardsSection } from "@/components/contact"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Contact",
|
||||
description: "Get in touch with the DalCode team. We'd love to hear from you about partnerships, support, or general inquiries.",
|
||||
title: "联系团队",
|
||||
description: "和 DAL Code 团队聊聊产品试用、企业方案、生态合作和建设方向。",
|
||||
openGraph: {
|
||||
title: "Contact DalCode",
|
||||
description: "Get in touch with the DalCode team.",
|
||||
title: "联系 DAL Code",
|
||||
description: "和 DAL Code 团队聊聊产品试用、企业方案、生态合作和建设方向。",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
+10
-5
@@ -6,6 +6,7 @@ import Footer from "@/components/Footer"
|
||||
import GsapAnimations from "@/components/GsapAnimations"
|
||||
import RevealObserver from "@/components/RevealObserver"
|
||||
import PageTransition from "@/components/PageTransition"
|
||||
import { SITE_BRAND, SITE_DESCRIPTION, SITE_NAME } from "@/lib/site-content"
|
||||
import "./webflow.css"
|
||||
import "./globals.css"
|
||||
|
||||
@@ -22,16 +23,20 @@ const interTight = Inter_Tight({
|
||||
variable: "--font-inter-tight",
|
||||
display: "swap",
|
||||
})
|
||||
const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? "http://localhost:3000"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL(SITE_URL),
|
||||
title: {
|
||||
default: "DalCode - AI Code Intelligence",
|
||||
template: "%s | DalCode",
|
||||
default: SITE_BRAND,
|
||||
template: `%s | ${SITE_NAME}`,
|
||||
},
|
||||
description: "DalCode - AI-powered code intelligence platform for innovation-driven teams.",
|
||||
description: SITE_DESCRIPTION,
|
||||
openGraph: {
|
||||
type: "website",
|
||||
siteName: "DalCode",
|
||||
siteName: SITE_BRAND,
|
||||
title: SITE_BRAND,
|
||||
description: SITE_DESCRIPTION,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -42,7 +47,7 @@ export default function RootLayout({
|
||||
}>) {
|
||||
return (
|
||||
<html
|
||||
lang="en"
|
||||
lang="zh-CN"
|
||||
className={`w-mod-js w-mod-ix3 ${inter.variable} ${interTight.variable}`}
|
||||
suppressHydrationWarning
|
||||
>
|
||||
|
||||
+20
-4
@@ -7,14 +7,30 @@ export default function NotFound() {
|
||||
<div className="text-center" style={{ padding: "120px 0" }}>
|
||||
<div className="subtitle">404</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h1>Page not found</h1>
|
||||
<h1>这个页面现在不在 DAL Code 官网上</h1>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>The page you're looking for doesn't exist or has been moved.</p>
|
||||
<p>它可能在模板改造过程中被移除、改名,或者链接已经更新。你可以先回到首页,或继续查看产品定位与产品文章。</p>
|
||||
</div>
|
||||
<div className="mg-top-24px">
|
||||
<Link href="/" className="form-button w-button">
|
||||
Back to home
|
||||
<Link href="/" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>返回首页</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
</svg>
|
||||
<div className="button-icon-bg" />
|
||||
<div className="button-icon-bg-inside" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<Link href="/about" className="tertiary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>查看产品定位</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+5
-4
@@ -1,12 +1,13 @@
|
||||
import type { Metadata } from "next"
|
||||
import { HeroSection, IntegrationsSection, PrinciplesSection, CtaSection, BlogPreviewSection } from "@/components/home"
|
||||
import { SITE_BRAND, SITE_DESCRIPTION } from "@/lib/site-content"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "DalCode - AI Code Intelligence Platform",
|
||||
description: "Transform your development workflow with AI-powered code intelligence. DalCode helps innovation-driven teams ship faster with smart automation and deep code understanding.",
|
||||
title: SITE_BRAND,
|
||||
description: SITE_DESCRIPTION,
|
||||
openGraph: {
|
||||
title: "DalCode - AI Code Intelligence Platform",
|
||||
description: "Transform your development workflow with AI-powered code intelligence.",
|
||||
title: SITE_BRAND,
|
||||
description: SITE_DESCRIPTION,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -15,12 +15,12 @@ export async function generateStaticParams() {
|
||||
export async function generateMetadata({ params }: Props): Promise<Metadata> {
|
||||
const { id } = await params
|
||||
const member = TEAM_MEMBERS.find((m) => m.slug === id)
|
||||
if (!member) return { title: "Team Member Not Found" }
|
||||
if (!member) return { title: "能力模块未找到" }
|
||||
return {
|
||||
title: member.name,
|
||||
description: `${member.name} - ${member.role} at DalCode`,
|
||||
title: `${member.name} | DAL Code`,
|
||||
description: member.bio,
|
||||
openGraph: {
|
||||
title: `${member.name} - ${member.role}`,
|
||||
title: `${member.name} | ${member.role}`,
|
||||
description: member.bio,
|
||||
images: [{ url: member.image }],
|
||||
},
|
||||
@@ -61,35 +61,10 @@ export default async function TeamMemberPage({ params }: Props) {
|
||||
<div className="mg-top-regular">
|
||||
<div className="inner-container _650px center">
|
||||
<div className="blog-post-rich-text w-richtext">
|
||||
<h2>About</h2>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.</p>
|
||||
<p>Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div className="inner-container _650px center">
|
||||
<div className="team-member-buttons-wrapper" style={{ justifyContent: "center" }}>
|
||||
<div>
|
||||
<a href="https://x.com" className="social-square-icon-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 19 18" fill="none" className="social-media-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="social-square-bg" />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://linkedin.com" className="social-square-icon-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="social-media-icon">
|
||||
<path d="M1 2.99134C1 2.41413 1.20271 1.93794 1.60811 1.56277C2.01351 1.18758 2.54055 1 3.18919 1C3.82626 1 4.34169 1.18469 4.73552 1.55411C5.14092 1.93506 5.34363 2.43145 5.34363 3.04329C5.34363 3.5974 5.14672 4.05915 4.7529 4.42857C4.3475 4.80952 3.81467 5 3.15444 5H3.13707C2.49999 5 1.98456 4.80952 1.59073 4.42857C1.19691 4.04762 1 3.56854 1 2.99134ZM1.22587 18.1429V6.57576H5.08301V18.1429H1.22587ZM7.22008 18.1429H11.0772V11.684C11.0772 11.2799 11.1236 10.9682 11.2162 10.7489C11.3784 10.3564 11.6245 10.0245 11.9546 9.75324C12.2847 9.48195 12.6988 9.34632 13.1969 9.34632C14.4942 9.34632 15.1429 10.2179 15.1429 11.961V18.1429H19V11.5108C19 9.8023 18.5946 8.50649 17.7838 7.62337C16.973 6.74026 15.9015 6.2987 14.5695 6.2987C13.0753 6.2987 11.9112 6.93939 11.0772 8.22078V8.25541H11.0598L11.0772 8.22078V6.57576H7.22008C7.24324 6.94516 7.25483 8.09378 7.25483 10.0216C7.25483 11.9495 7.24324 14.6565 7.22008 18.1429Z" fill="currentColor" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="social-square-bg" />
|
||||
</a>
|
||||
</div>
|
||||
<h2>能力故事</h2>
|
||||
{member.story.map((paragraph) => (
|
||||
<p key={paragraph}>{paragraph}</p>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -97,7 +72,7 @@ export default async function TeamMemberPage({ params }: Props) {
|
||||
<div className="inner-container _650px center text-center">
|
||||
<Link href="/about" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>Back to team</div>
|
||||
<div>返回能力版图</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
|
||||
+27
-26
@@ -6,14 +6,14 @@ import { z } from "zod"
|
||||
import { useState } from "react"
|
||||
|
||||
const schema = z.object({
|
||||
firstName: z.string().min(1, "First name is required"),
|
||||
lastName: z.string().min(1, "Last name is required"),
|
||||
email: z.string().email("Please enter a valid email"),
|
||||
country: z.string().min(1, "Country is required"),
|
||||
phone: z.string().min(1, "Phone number is required"),
|
||||
company: z.string().min(1, "Company is required"),
|
||||
companySize: z.string().min(1, "Please select company size"),
|
||||
message: z.string().min(10, "Message must be at least 10 characters"),
|
||||
firstName: z.string().min(1, "请填写名字"),
|
||||
lastName: z.string().min(1, "请填写姓氏"),
|
||||
email: z.string().email("请输入有效的邮箱地址"),
|
||||
country: z.string().min(1, "请填写所在国家或地区"),
|
||||
phone: z.string().min(1, "请填写联系方式"),
|
||||
company: z.string().min(1, "请填写公司或项目名称"),
|
||||
companySize: z.string().min(1, "请选择团队规模"),
|
||||
message: z.string().min(10, "请至少写 10 个字符说明你的需求"),
|
||||
})
|
||||
|
||||
type FormData = z.infer<typeof schema>
|
||||
@@ -43,15 +43,15 @@ export default function ContactForm() {
|
||||
|
||||
if (status === "success") {
|
||||
return (
|
||||
<div className="contact-form-block w-form">
|
||||
<div id="contact-form" className="contact-form-block w-form">
|
||||
<div className="success-message-wrapper w-form-done" style={{ display: "block" }}>
|
||||
<div className="contact-success-message">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="contact-success-icon">
|
||||
<path d="M7.20658 10.9311L9.24116 12.1209L12.7928 7.20696M1 10C1 5.02944 5.02944 1 10 1C14.9706 1 19 5.02944 19 10C19 14.9706 14.9706 19 10 19C5.02944 19 1 14.9706 1 10Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
</svg>
|
||||
<h2 className="display-5">Thank you! We'll get back to you soon</h2>
|
||||
<h2 className="display-5">已收到你的信息,我们会尽快联系你</h2>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>We have received your message and will get back to you as soon as possible.</p>
|
||||
<p>如果你在消息里写了团队规模、代码栈和交付约束,后续沟通会更快进入正题。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -60,20 +60,21 @@ export default function ContactForm() {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="contact-form-block w-form">
|
||||
<div id="contact-form" className="contact-form-block w-form">
|
||||
<form onSubmit={handleSubmit(onSubmit)} className="grid-2-columns contact-form-grid">
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="First name" type="text" {...register("firstName")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="Last name" type="text" {...register("lastName")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="Email address" type="email" {...register("email")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="Country" type="text" {...register("country")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="(123) 456 - 7890" type="tel" {...register("phone")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="Company" type="text" {...register("company")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="名字" type="text" {...register("firstName")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="姓氏" type="text" {...register("lastName")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="工作邮箱" type="email" {...register("email")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="所在国家 / 地区" type="text" {...register("country")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="微信 / 电话" type="tel" {...register("phone")} />
|
||||
<input className={`input contact-form w-input`} maxLength={256} placeholder="公司 / 项目名称" type="text" {...register("company")} />
|
||||
<div className="select-wrapper">
|
||||
<select className="input select-form w-select" {...register("companySize")}>
|
||||
<option value="">Company size</option>
|
||||
<option value="1-20 Employees">1-20 Employees</option>
|
||||
<option value="20-100 Employees">20-100 Employees</option>
|
||||
<option value="100+ Employees">100+ Employees</option>
|
||||
<option value="">团队规模</option>
|
||||
<option value="1-10">1-10 人</option>
|
||||
<option value="11-50">11-50 人</option>
|
||||
<option value="51-200">51-200 人</option>
|
||||
<option value="200+">200 人以上</option>
|
||||
</select>
|
||||
<div className="select-icon-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="select-icon">
|
||||
@@ -81,21 +82,21 @@ export default function ContactForm() {
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<textarea maxLength={5000} placeholder="Enter your message" className="text-area contact-form w-input" {...register("message")} />
|
||||
<textarea maxLength={5000} placeholder="介绍你的团队、当前流程、想解决的问题,以及希望 DAL Code 帮你完成什么。" className="text-area contact-form w-input" {...register("message")} />
|
||||
<div className="contact-form-button-wrapper">
|
||||
<button type="submit" className="form-button w-button" disabled={isSubmitting}>
|
||||
{isSubmitting ? "Please wait..." : "Send message"}
|
||||
{isSubmitting ? "提交中..." : "提交需求"}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
{Object.keys(errors).length > 0 && (
|
||||
<div className="error-message contact-form-error w-form-fail" style={{ display: "block" }}>
|
||||
<div>Please fill in all required fields correctly.</div>
|
||||
<div>请先完整填写必填项,并确认邮箱格式正确。</div>
|
||||
</div>
|
||||
)}
|
||||
{status === "error" && (
|
||||
<div className="error-message contact-form-error w-form-fail" style={{ display: "block" }}>
|
||||
<div>Oops! Something went wrong. Please try again.</div>
|
||||
<div>提交失败,请稍后重试。</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
+34
-157
@@ -3,6 +3,7 @@
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import NewsletterForm from "@/components/NewsletterForm"
|
||||
import { CONTACT_CHANNELS, FOOTER_GROUPS, SITE_BRAND, SITE_DESCRIPTION } from "@/lib/site-content"
|
||||
|
||||
export default function Footer() {
|
||||
return (
|
||||
@@ -12,13 +13,12 @@ export default function Footer() {
|
||||
<div className="footer-top">
|
||||
<div className="footer-logo-wrapper">
|
||||
<Link href="/" className="logo-link w-inline-block w--current">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a73cf7c58867b86184dc28_logo-icon-quantum-webflow-template.svg" width={54} height={54} alt="Logo - Quantum | Webflow Template" className="logo-icon w-variant-7662d6cb-8aa5-f783-c60a-07a613bd9733" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a73cf7c58867b86184dc28_logo-icon-quantum-webflow-template.svg" width={54} height={54} alt="DAL Code logo" className="logo-icon w-variant-7662d6cb-8aa5-f783-c60a-07a613bd9733" />
|
||||
</Link>
|
||||
</div>
|
||||
<Link href="/careers" className="footer-button w-inline-block">
|
||||
<Link href="/contact" className="footer-button w-inline-block">
|
||||
<div className="button-content footer">
|
||||
<div>
|
||||
Join our team </div>
|
||||
<div>申请试用</div>
|
||||
</div>
|
||||
<div className="button-icon-wrapper footer primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
@@ -43,122 +43,40 @@ Join our team </div>
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div className="w-layout-grid footer-middle-content">
|
||||
<div className="inner-container _355px _100-tablet">
|
||||
<div className="display-6 medium text-titles-dm">
|
||||
Unlock tomorrow’s most important AI trends </div>
|
||||
<div className="display-6 medium text-titles-dm">{SITE_BRAND}</div>
|
||||
<div className="mg-top-8-px">
|
||||
<p className="text-color-neutral-400 mg-bottom-20px">
|
||||
Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque. </p>
|
||||
<p className="text-color-neutral-400 mg-bottom-20px">{SITE_DESCRIPTION}</p>
|
||||
</div>
|
||||
<NewsletterForm variant="dark" />
|
||||
</div>
|
||||
<div className="w-layout-grid footer-pages-grid">
|
||||
<div className="footer-pages-column">
|
||||
<Link href="/" className="footer-link w-inline-block w--current">
|
||||
<div className="footer-link-text">
|
||||
Home </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/about" className="footer-link w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
About </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/contact" className="footer-link w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
Contact </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/careers" className="footer-link last---left-column w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
Careers </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="footer-pages-column">
|
||||
<Link href="/careers/ai-research-scientist" className="footer-link w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
Career single </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/blog" className="footer-link w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
Blog </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/blog-posts/ai-powered-predictive-models-and-their-impact-across-industries" className="footer-link w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
Blog post </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
<Link href="/coming-soon" className="footer-link last---right-column w-inline-block">
|
||||
<div className="footer-link-text">
|
||||
Coming soon </div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg">
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
{FOOTER_GROUPS.map((group) => (
|
||||
<div key={group.title} className="footer-pages-column">
|
||||
{group.links.map((link, index) => (
|
||||
<Link
|
||||
key={link.href}
|
||||
href={link.href}
|
||||
className={`footer-link w-inline-block ${index === group.links.length - 1 ? "last---left-column" : ""}`}
|
||||
>
|
||||
<div className="footer-link-text">{link.label}</div>
|
||||
<div className="footer-link-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="footer-link-bg" />
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="corner-gradient-container">
|
||||
<div className="w-layout-grid footer-links-wrapper">
|
||||
<a data-w-id="08100fe2-7e2d-6e6c-ca53-e21c22c274f5" href="mailto:info@quantum.com" className="footer-contact-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
{CONTACT_CHANNELS.map((channel, index) => (
|
||||
<a key={channel.title} data-w-id={`footer-channel-${index}`} href={channel.href} className="footer-contact-link w-inline-block" target={channel.href.startsWith("http") ? "_blank" : undefined} rel={channel.href.startsWith("http") ? "noopener noreferrer" : undefined}>
|
||||
<div className="footer-contact-link-icon-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" className="footer-contact-link-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M0 2H24V4.31556L12.0001 10.861L0 4.31546V2ZM0 6.59364V22H24V6.59373L12.0001 13.1391L0 6.59364Z" fill="currentColor">
|
||||
@@ -168,50 +86,13 @@ Coming soon </div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-color-neutral-500">
|
||||
Email address </div>
|
||||
<div className="text-color-neutral-500">{channel.title}</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<div className="medium text-titles-dm">
|
||||
info@quantumlab.com </div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://www.intercom.com" target="_blank" className="footer-contact-link w-inline-block" rel="noopener noreferrer">
|
||||
<div className="footer-contact-link-icon-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" className="footer-contact-link-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M2 1H1V20H5.25V23.7944L6.77605 22.8505L11.3843 20H23V1H2ZM16 9.5H7V6.5H16V9.5ZM7 14.5H14V11.5H7V14.5Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="footer-contact-link-bg">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-color-neutral-500">
|
||||
Live chat with us </div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<div className="medium text-titles-dm">
|
||||
Chat with us </div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a data-w-id="7fe5019c-0d48-0b18-79a9-ab7251d22b0b" href="mailto:support@quantum.com" className="footer-contact-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="footer-contact-link-icon-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" className="footer-contact-link-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M1.375 12C1.375 6.13197 6.13197 1.375 12 1.375C17.868 1.375 22.625 6.13197 22.625 12C22.625 17.868 17.868 22.625 12 22.625C6.13197 22.625 1.375 17.868 1.375 12ZM12.8543 7.60707H11.0834V5.83623H12.8543V7.60707ZM11.1146 11.1146H9.34375V9.34375H12.8854V15.5417H14.6563V17.3125H9.34375V15.5417H11.1146V11.1146Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="footer-contact-link-bg">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-color-neutral-500">
|
||||
Support </div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<div className="medium text-titles-dm">
|
||||
support@quantumlab.com </div>
|
||||
<div className="medium text-titles-dm">{channel.value}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
<div className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal bottom-left dark-mode">
|
||||
@@ -225,21 +106,17 @@ support@quantumlab.com </div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="footer-bottom">
|
||||
<a href="https://www.brixtemplates.com" target="_blank" className="link-square-icon-left---dark-mode w-inline-block" rel="noopener noreferrer">
|
||||
<Link href="/about" className="link-square-icon-left---dark-mode w-inline-block">
|
||||
<div className="icon-40px---dark-mode">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 19" fill="none" className="icon-18px">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M19.7781 4.875L13.8748 16.4155H8.32985L10.8004 11.6326H10.6896C8.65138 14.2785 5.61034 16.0202 1.27734 16.4155V11.6988C1.27734 11.6988 4.04927 11.5351 5.6788 9.82186H1.27734V4.87509H6.22411V8.94374L6.33513 8.94329L8.35659 4.87509H12.0977V8.91794L12.2087 8.91776L14.306 4.875H19.7781Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
More Webflow Templates </div>
|
||||
</a>
|
||||
<div>了解产品定位</div>
|
||||
</Link>
|
||||
<p className="text-color-neutral-500">
|
||||
Copyright © QuantumLab | Designed by <a href="https://www.brixtemplates.com" target="_blank" className="text-link" rel="noopener noreferrer">
|
||||
BRIX Templates </a>
|
||||
and powered by <a href="https://webflow.com" target="_blank" className="text-link" rel="noopener noreferrer">
|
||||
Webflow </a>
|
||||
Copyright © 2026 DAL Code by DeepAILab. 官网基于现有 Next.js 骨架持续演进。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@ export default function GsapAnimations() {
|
||||
|
||||
ctx = gsap.context(() => {
|
||||
initMarquee(gsap, Observer)
|
||||
initCounters(gsap, ScrollTrigger)
|
||||
initCounters(gsap)
|
||||
initScrollReveal(gsap, ScrollTrigger)
|
||||
initButtonHovers(gsap)
|
||||
initSmoothScroll()
|
||||
@@ -93,7 +93,7 @@ function initMarquee(
|
||||
target: window,
|
||||
type: "wheel,scroll,touch",
|
||||
onChangeY: (self: { velocityY: number }) => {
|
||||
let velocity = gsap.utils.clamp(-40, 40, self.velocityY * 0.002)
|
||||
const velocity = gsap.utils.clamp(-40, 40, self.velocityY * 0.002)
|
||||
const dir = velocity < 0 ? -1 : 1
|
||||
instances.forEach((inst) => {
|
||||
if (inst.isHoverPaused) return
|
||||
@@ -115,10 +115,7 @@ function initMarquee(
|
||||
}
|
||||
}
|
||||
|
||||
function initCounters(
|
||||
gsap: typeof import("gsap").gsap,
|
||||
ScrollTrigger: typeof import("gsap/ScrollTrigger").ScrollTrigger,
|
||||
) {
|
||||
function initCounters(gsap: typeof import("gsap").gsap) {
|
||||
const elements = gsap.utils.toArray<HTMLElement>(".count-up-number-animation")
|
||||
if (!elements.length) return
|
||||
|
||||
|
||||
+19
-41
@@ -5,13 +5,7 @@ import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import { usePathname } from "next/navigation"
|
||||
import ThemeToggle from "@/components/ThemeToggle"
|
||||
|
||||
const NAV_LINKS = [
|
||||
{ href: "/", label: "Home" },
|
||||
{ href: "/about", label: "About" },
|
||||
{ href: "/blog", label: "Blog" },
|
||||
{ href: "/contact", label: "Contact" },
|
||||
]
|
||||
import { NAV_GROUPS, NAV_LINKS } from "@/lib/site-content"
|
||||
|
||||
function ChevronIcon() {
|
||||
return (
|
||||
@@ -34,6 +28,10 @@ export default function Header() {
|
||||
const [dropdownOpen, setDropdownOpen] = useState(false)
|
||||
const [scrolled, setScrolled] = useState(false)
|
||||
const pathname = usePathname()
|
||||
const closeMenus = useCallback(() => {
|
||||
setMobileOpen(false)
|
||||
setDropdownOpen(false)
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
const onScroll = () => setScrolled(window.scrollY > 20)
|
||||
@@ -41,11 +39,6 @@ export default function Header() {
|
||||
return () => window.removeEventListener("scroll", onScroll)
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
setMobileOpen(false)
|
||||
setDropdownOpen(false)
|
||||
}, [pathname])
|
||||
|
||||
const toggleMobile = useCallback(() => setMobileOpen((v) => !v), [])
|
||||
|
||||
return (
|
||||
@@ -82,6 +75,7 @@ export default function Header() {
|
||||
<Link
|
||||
href={href}
|
||||
className={`link w-inline-block ${pathname === href ? "w--current" : ""}`}
|
||||
onClick={closeMenus}
|
||||
>
|
||||
<div className="link-icon-wrapper">
|
||||
<div className="link-icon">
|
||||
@@ -104,7 +98,7 @@ export default function Header() {
|
||||
aria-expanded={dropdownOpen}
|
||||
type="button"
|
||||
>
|
||||
<div>Pages</div>
|
||||
<div>Explore</div>
|
||||
<div className="dropdown-icon">
|
||||
<DropdownIcon />
|
||||
</div>
|
||||
@@ -113,28 +107,12 @@ export default function Header() {
|
||||
<nav className="dropdown-content-wrapper w-dropdown-list w--open">
|
||||
<div className="card header-dropdown-card">
|
||||
<div className="w-layout-grid header-dropdown-grid">
|
||||
<div>
|
||||
<div className="dropdown-title">Main pages</div>
|
||||
<div className="w-layout-grid main-pages-grid">
|
||||
{NAV_GROUPS.map((group) => (
|
||||
<div key={group.title}>
|
||||
<div className="dropdown-title">{group.title}</div>
|
||||
<div className="w-layout-grid pages-column">
|
||||
{[
|
||||
{ href: "/", label: "Home" },
|
||||
{ href: "/about", label: "About" },
|
||||
{ href: "/contact", label: "Contact" },
|
||||
].map(({ href, label }) => (
|
||||
<Link key={href} href={href} className="link w-inline-block">
|
||||
<div className="link-icon-wrapper">
|
||||
<div className="link-icon"><ChevronIcon /></div>
|
||||
</div>
|
||||
<div className="link-text">{label}</div>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
<div className="w-layout-grid pages-column">
|
||||
{[
|
||||
{ href: "/blog", label: "Blog" },
|
||||
].map(({ href, label }) => (
|
||||
<Link key={href} href={href} className="link w-inline-block">
|
||||
{group.links.map(({ href, label }) => (
|
||||
<Link key={href} href={href} className="link w-inline-block" onClick={closeMenus}>
|
||||
<div className="link-icon-wrapper">
|
||||
<div className="link-icon"><ChevronIcon /></div>
|
||||
</div>
|
||||
@@ -143,7 +121,7 @@ export default function Header() {
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -151,9 +129,9 @@ export default function Header() {
|
||||
</div>
|
||||
</li>
|
||||
<li className="link-nav-item mbl-button">
|
||||
<Link href="/contact" className="primary-button w-inline-block">
|
||||
<Link href="/contact" className="primary-button w-inline-block" onClick={closeMenus}>
|
||||
<div className="button-content">
|
||||
<div>Join our team</div>
|
||||
<div>申请试用</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<ChevronIcon />
|
||||
<div className="button-icon-bg" />
|
||||
@@ -166,9 +144,9 @@ export default function Header() {
|
||||
</nav>
|
||||
<div className="hidden-on-mobile-landscape">
|
||||
<div className="show-light-mode">
|
||||
<Link href="/contact" className="primary-button w-inline-block">
|
||||
<Link href="/contact" className="primary-button w-inline-block" onClick={closeMenus}>
|
||||
<div className="button-content">
|
||||
<div>Join our team</div>
|
||||
<div>申请试用</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<ChevronIcon />
|
||||
<div className="button-icon-bg" />
|
||||
@@ -178,9 +156,9 @@ export default function Header() {
|
||||
</Link>
|
||||
</div>
|
||||
<div className="show-dark-mode">
|
||||
<Link href="/contact" className="secondary-button w-inline-block">
|
||||
<Link href="/contact" className="secondary-button w-inline-block" onClick={closeMenus}>
|
||||
<div className="button-content">
|
||||
<div>Join our team</div>
|
||||
<div>申请试用</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<ChevronIcon />
|
||||
<div className="button-icon-bg bg-neutral-800" />
|
||||
|
||||
@@ -6,7 +6,7 @@ import { z } from "zod"
|
||||
import { useState } from "react"
|
||||
|
||||
const schema = z.object({
|
||||
email: z.string().email("Please enter a valid email address"),
|
||||
email: z.string().email("请输入有效的邮箱地址"),
|
||||
})
|
||||
|
||||
type FormData = z.infer<typeof schema>
|
||||
@@ -46,7 +46,7 @@ export default function NewsletterForm({ variant = "dark" }: NewsletterFormProps
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="squared-icon _14px">
|
||||
<path d="M7.20658 10.9311L9.24116 12.1209L12.7928 7.20696M1 10C1 5.02944 5.02944 1 10 1C14.9706 1 19 5.02944 19 10C19 14.9706 14.9706 19 10 19C5.02944 19 1 14.9706 1 10Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
</svg>
|
||||
<div>Thanks for subscribing to our newsletter!</div>
|
||||
<div>已订阅 DAL Code 月度洞察。</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
@@ -59,7 +59,7 @@ export default function NewsletterForm({ variant = "dark" }: NewsletterFormProps
|
||||
<input
|
||||
className={`input ${isDark ? "dark-mode" : ""} w-input`}
|
||||
maxLength={256}
|
||||
placeholder="Enter your email"
|
||||
placeholder="输入邮箱,接收 DAL Code 月度洞察"
|
||||
type="email"
|
||||
{...register("email")}
|
||||
/>
|
||||
@@ -69,7 +69,7 @@ export default function NewsletterForm({ variant = "dark" }: NewsletterFormProps
|
||||
className={`form-button inside-input ${isDark ? "dark-mode" : ""} w-button`}
|
||||
disabled={isSubmitting}
|
||||
>
|
||||
{isSubmitting ? "Please wait..." : "Subscribe"}
|
||||
{isSubmitting ? "提交中..." : "订阅"}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -81,7 +81,7 @@ export default function NewsletterForm({ variant = "dark" }: NewsletterFormProps
|
||||
</form>
|
||||
{status === "error" && (
|
||||
<div className="error-message w-form-fail" style={{ display: "block" }}>
|
||||
<div>Oops! Something went wrong while submitting the form.</div>
|
||||
<div>订阅失败,请稍后重试。</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -8,9 +8,7 @@ export default function RevealObserver() {
|
||||
|
||||
useEffect(() => {
|
||||
let observer: IntersectionObserver | null = null
|
||||
let raf: number
|
||||
|
||||
raf = requestAnimationFrame(() => {
|
||||
const raf = requestAnimationFrame(() => {
|
||||
const allDataWid = document.querySelectorAll<HTMLElement>("[data-w-id]")
|
||||
const targets: HTMLElement[] = []
|
||||
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
"use client"
|
||||
|
||||
import { useTheme } from "next-themes"
|
||||
import { useEffect, useState } from "react"
|
||||
import { useSyncExternalStore } from "react"
|
||||
|
||||
export default function ThemeToggle() {
|
||||
const { theme, setTheme } = useTheme()
|
||||
const [mounted, setMounted] = useState(false)
|
||||
|
||||
useEffect(() => setMounted(true), [])
|
||||
const mounted = useSyncExternalStore(
|
||||
() => () => {},
|
||||
() => true,
|
||||
() => false,
|
||||
)
|
||||
|
||||
if (!mounted) {
|
||||
return <button className="theme-toggle" aria-label="Toggle theme"><span style={{ width: 18, height: 18 }} /></button>
|
||||
|
||||
@@ -1,70 +1,53 @@
|
||||
import Image from "next/image"
|
||||
import { TARGET_PERSONAS } from "@/lib/site-content"
|
||||
|
||||
export default function CareersSection() {
|
||||
return (
|
||||
<section className="section pd-top-0 overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="57c6d91a-ff5b-0c4b-0e98-f6574583d612" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _650px center">
|
||||
<div
|
||||
data-w-id="57c6d91a-ff5b-0c4b-0e98-f6574583d612"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="inner-container _650px center"
|
||||
>
|
||||
<div className="text-center">
|
||||
<div className="subtitle">Investors</div>
|
||||
<div className="subtitle">Who We Build For</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
We partner with purpose-driven investors </h2>
|
||||
<h2>DAL Code 目前最优先服务的四类用户</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<div className="inner-container _566px center">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur netus quis ac varius ut nam est tellus ut porttitor ut volutpat malesuada rhoncus quis lacus augue ac urna et eget elementum at elit. </p>
|
||||
<p>我们不想做一个谁都能说得通、但谁都不真正依赖的 AI IDE,所以官网也直接把核心目标用户讲清楚。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="97dc1372-f411-c523-0bef-128c83baf08b" style={{"opacity": "0", "filter": "blur(8px)"}} className="logo-strip-marquee-wrapper">
|
||||
<div className="logo-strip-marquee marquee-scroll-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a4098611a628c081a_linkora-logo-quantum-webflow-template.svg" width={125} height={33} alt="Linkora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a23b74de53cc9a64f_converra-logo-quantum-webflow-template.svg" width={130} height={33} alt="Converra Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a24ff0842f7ea9e4f_nexora-logo-quantum-webflow-template.svg" width={110} height={33} alt="Nexora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876ba1593ccde3aeb482_syncell-logo-quantum-webflow-template.svg" width={119} height={33} alt="Syncell Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876c0f4d2d1856ba6b88_socium-logo-quantum-webflow-template.svg" width={125} height={33} alt="Socium Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876bee27e15bc9b9e5a8_bridgr-logo-quantum-webflow-template.svg" width={109} height={33} alt="Bridgr Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a6c28f60e0f1858b8_netspire-logo-quantum-webflow-template.svg" width={121} height={33} alt="Netspire Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<div
|
||||
data-w-id="97dc1372-f411-c523-0bef-128c83baf08b"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="corner-gradient-container"
|
||||
>
|
||||
<div className="border-wrapper">
|
||||
<div className="w-layout-grid values-grid">
|
||||
{TARGET_PERSONAS.map((persona) => (
|
||||
<div key={persona.title} className="value-item">
|
||||
<div className="display-4 medium text-titles">{persona.title}</div>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<p>{persona.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div className="logo-strip-marquee marquee-scroll-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a4098611a628c081a_linkora-logo-quantum-webflow-template.svg" width={125} height={33} alt="Linkora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a23b74de53cc9a64f_converra-logo-quantum-webflow-template.svg" width={130} height={33} alt="Converra Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a24ff0842f7ea9e4f_nexora-logo-quantum-webflow-template.svg" width={110} height={33} alt="Nexora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876ba1593ccde3aeb482_syncell-logo-quantum-webflow-template.svg" width={119} height={33} alt="Syncell Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876c0f4d2d1856ba6b88_socium-logo-quantum-webflow-template.svg" width={125} height={33} alt="Socium Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876bee27e15bc9b9e5a8_bridgr-logo-quantum-webflow-template.svg" width={109} height={33} alt="Bridgr Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a6c28f60e0f1858b8_netspire-logo-quantum-webflow-template.svg" width={121} height={33} alt="Netspire Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
</div>
|
||||
<div className="logo-strip-marquee marquee-scroll-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a4098611a628c081a_linkora-logo-quantum-webflow-template.svg" width={125} height={33} alt="Linkora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a23b74de53cc9a64f_converra-logo-quantum-webflow-template.svg" width={130} height={33} alt="Converra Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a24ff0842f7ea9e4f_nexora-logo-quantum-webflow-template.svg" width={110} height={33} alt="Nexora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876ba1593ccde3aeb482_syncell-logo-quantum-webflow-template.svg" width={119} height={33} alt="Syncell Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876c0f4d2d1856ba6b88_socium-logo-quantum-webflow-template.svg" width={125} height={33} alt="Socium Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876bee27e15bc9b9e5a8_bridgr-logo-quantum-webflow-template.svg" width={109} height={33} alt="Bridgr Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a6c28f60e0f1858b8_netspire-logo-quantum-webflow-template.svg" width={121} height={33} alt="Netspire Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
</div>
|
||||
<div className="logo-strip-marquee marquee-scroll-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a4098611a628c081a_linkora-logo-quantum-webflow-template.svg" width={125} height={33} alt="Linkora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a23b74de53cc9a64f_converra-logo-quantum-webflow-template.svg" width={130} height={33} alt="Converra Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a24ff0842f7ea9e4f_nexora-logo-quantum-webflow-template.svg" width={110} height={33} alt="Nexora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876ba1593ccde3aeb482_syncell-logo-quantum-webflow-template.svg" width={119} height={33} alt="Syncell Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876c0f4d2d1856ba6b88_socium-logo-quantum-webflow-template.svg" width={125} height={33} alt="Socium Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876bee27e15bc9b9e5a8_bridgr-logo-quantum-webflow-template.svg" width={109} height={33} alt="Bridgr Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a6c28f60e0f1858b8_netspire-logo-quantum-webflow-template.svg" width={121} height={33} alt="Netspire Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
</div>
|
||||
<div className="logo-strip-marquee marquee-scroll-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a4098611a628c081a_linkora-logo-quantum-webflow-template.svg" width={125} height={33} alt="Linkora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a23b74de53cc9a64f_converra-logo-quantum-webflow-template.svg" width={130} height={33} alt="Converra Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a24ff0842f7ea9e4f_nexora-logo-quantum-webflow-template.svg" width={110} height={33} alt="Nexora Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876ba1593ccde3aeb482_syncell-logo-quantum-webflow-template.svg" width={119} height={33} alt="Syncell Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876c0f4d2d1856ba6b88_socium-logo-quantum-webflow-template.svg" width={125} height={33} alt="Socium Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876bee27e15bc9b9e5a8_bridgr-logo-quantum-webflow-template.svg" width={109} height={33} alt="Bridgr Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a7876a6c28f60e0f1858b8_netspire-logo-quantum-webflow-template.svg" width={121} height={33} alt="Netspire Logo - Quantum | Webflow Template" className="logo-strip-item" />
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,93 +1,66 @@
|
||||
import LottiePlayer from "@/components/LottiePlayer"
|
||||
import { COMPANY_STATS } from "@/lib/site-content"
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
<section className="section top overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="28893d6d-b366-6951-6d91-f80940d4e59d" style={{"opacity": "0", "filter": "blur(8px)"}} className="title-left-content-right">
|
||||
<div
|
||||
data-w-id="28893d6d-b366-6951-6d91-f80940d4e59d"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="title-left-content-right"
|
||||
>
|
||||
<div>
|
||||
<div className="subtitle">About us</div>
|
||||
<div className="subtitle">Product Positioning</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h1>About our AI lab</h1>
|
||||
<h1>DAL Code 不是另一个 AI Chat,而是一个 Intent-to-Code 平台</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div className="inner-container _355px">
|
||||
<p>Lorem ipsum dolor sit amet consectetur maecenas volutpat lobortis ultrices elementum est ut etiam.</p>
|
||||
<p>
|
||||
我们在做的是一个会先澄清需求、再规划任务、再驱动工具和模型去完成交付的 AI
|
||||
Engineering Workspace,而不是把更多模型名堆在界面上。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div data-w-id="c9aa8bb0-8524-45b8-1337-b4d2c55b6f23" style={{"opacity": "0", "filter": "blur(8px)"}} className="mg-top-regular overflow-hidden">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28b101cd56458bf646202_about-hero-animation-wave-quantum-webflow-template.json" className="about-hero-lottie" loop autoplay />
|
||||
<div
|
||||
data-w-id="c9aa8bb0-8524-45b8-1337-b4d2c55b6f23"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="mg-top-regular overflow-hidden"
|
||||
>
|
||||
<LottiePlayer
|
||||
src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28b101cd56458bf646202_about-hero-animation-wave-quantum-webflow-template.json"
|
||||
className="about-hero-lottie"
|
||||
loop
|
||||
autoplay
|
||||
/>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div className="w-layout-grid about-hero-stats-wrapper">
|
||||
<div data-w-id="d651207f-5e62-7ad5-26ff-8f1f18b04695">
|
||||
<div className="stat-wrapper _3-digits center-mbl">
|
||||
<div className="stat-text">
|
||||
<span data-count="100" className="count-up-number-animation">
|
||||
</span>
|
||||
</div>
|
||||
<div className="stat-arrow-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 15 14" fill="none" className="stat-arrow">
|
||||
<path d="M7.40431 13.0625L7.4043 2" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
<path d="M13.8141 8.40703L7.40703 2L1 8.40703" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
</svg>
|
||||
{COMPANY_STATS.map((stat) => (
|
||||
<div key={stat.label}>
|
||||
<div className="stat-wrapper center-mbl">
|
||||
<div className="stat-text">{stat.value}</div>
|
||||
<div className="stat-arrow-wrapper">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="100%"
|
||||
viewBox="0 0 15 14"
|
||||
fill="none"
|
||||
className="stat-arrow"
|
||||
>
|
||||
<path d="M7.40431 13.0625L7.4043 2" stroke="currentColor" strokeWidth="1.5" />
|
||||
<path
|
||||
d="M13.8141 8.40703L7.40703 2L1 8.40703"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="display-2">{stat.label}</div>
|
||||
</div>
|
||||
<div className="display-2">Active users monthly</div>
|
||||
</div>
|
||||
<div data-w-id="105a60b4-53cb-8544-7470-f8b8a08cf541">
|
||||
<div className="stat-wrapper center-mbl">
|
||||
<div className="stat-text">
|
||||
<span data-count="92" className="count-up-number-animation">
|
||||
</span>
|
||||
</div>
|
||||
<div className="stat-arrow-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 15 14" fill="none" className="stat-arrow">
|
||||
<path d="M7.40431 13.0625L7.4043 2" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
<path d="M13.8141 8.40703L7.40703 2L1 8.40703" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="display-2">Average model accuracy</div>
|
||||
</div>
|
||||
<div data-w-id="f23f0a63-0eea-7057-9e20-4a5e2141195a">
|
||||
<div className="stat-wrapper center-mbl">
|
||||
<div className="stat-text">
|
||||
<span data-count="89" className="count-up-number-animation">
|
||||
</span>
|
||||
</div>
|
||||
<div className="stat-arrow-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 15 14" fill="none" className="stat-arrow">
|
||||
<path d="M7.40431 13.0625L7.4043 2" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
<path d="M13.8141 8.40703L7.40703 2L1 8.40703" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="display-2">Productivity increase</div>
|
||||
</div>
|
||||
<div data-w-id="b7c967bb-e96e-8b72-b3b0-4b73512ef3ec">
|
||||
<div className="stat-wrapper center-mbl">
|
||||
<div className="stat-text">
|
||||
<span data-count="80" className="count-up-number-animation">
|
||||
</span>
|
||||
</div>
|
||||
<div className="stat-arrow-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 15 14" fill="none" className="stat-arrow">
|
||||
<path d="M7.40431 13.0625L7.4043 2" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
<path d="M13.8141 8.40703L7.40703 2L1 8.40703" stroke="currentColor" strokeWidth="1.5">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="display-2">Team members behind</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,38 +1,51 @@
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
|
||||
import { ABOUT_VALUES } from "@/lib/site-content"
|
||||
|
||||
export default function MissionSection() {
|
||||
return (
|
||||
<section className="section-small bg-neutral overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div className="inner-container _1068px center">
|
||||
<div className="position-relative---z-index-1">
|
||||
<div data-w-id="384ef9a0-4895-c961-61d5-c03fea5bc587" style={{"opacity": "0", "filter": "blur(8px)"}} className="title-left-content-right">
|
||||
<div
|
||||
data-w-id="384ef9a0-4895-c961-61d5-c03fea5bc587"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="title-left-content-right"
|
||||
>
|
||||
<div className="inner-container _460px">
|
||||
<div className="subtitle">
|
||||
</div>
|
||||
<div className="subtitle">Operating Principles</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
The values behind our platform </h2>
|
||||
<h2>DAL Code 背后的八个产品原则</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla. </p>
|
||||
从中文表达、权限审批到开源边界,我们更关心产品是否能被真实团队长期采用,而不是只在 Demo
|
||||
里显得聪明。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<Link href="#more-positions" className="tertiary-button w-inline-block">
|
||||
<Link href="/contact" className="tertiary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
More positions</div>
|
||||
<div>申请试用</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="100%"
|
||||
viewBox="0 0 17 17"
|
||||
fill="none"
|
||||
className="squared-icon"
|
||||
>
|
||||
<path
|
||||
d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="square"
|
||||
/>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside bg-neutral-600">
|
||||
</div>
|
||||
<div className="button-icon-bg bg-neutral-800" />
|
||||
<div className="button-icon-bg-inside bg-neutral-600" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
@@ -40,63 +53,38 @@ export default function MissionSection() {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-w-id="ff387e65-d5fd-6c3f-9251-5bd1999b387a" style={{"opacity": "0", "filter": "blur(8px)"}} className="container-large">
|
||||
<div
|
||||
data-w-id="ff387e65-d5fd-6c3f-9251-5bd1999b387a"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="container-large"
|
||||
>
|
||||
<div className="corner-gradient-container">
|
||||
<div className="border-wrapper">
|
||||
<div className="w-layout-grid values-grid">
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598eeb838c974f3def70a_accuracy-icon-quantum-webflow-template-1.svg" width={64} height={64} alt="Accuracy Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">Transparency</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f0e3caa08df665212f_trust-icon-quantum-webflow-template.svg" width={64} height={64} alt="Trust Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">
|
||||
</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f1f8443cbbcf767239_intellect-icon-quantum-webflow-template.svg" width={64} height={64} alt="Intellect Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">Innovation</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f00141b9ac31a01989_velocity-icon-quantum-webflow-template.svg" width={64} height={64} alt="Velocity Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">
|
||||
</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598eefda8dc1927236eb3_clarity-icon-quantum-webflow-template.svg" width={64} height={64} alt="Clarify Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">Safety</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f04600b3080cab823c_scalability-icon-quantum-webflow-template.svg" width={64} height={64} alt="Scalability Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">Reliability</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598ed8d91f474a2d4ecdc_excellence-icon-quantum-webflow-template.svg" width={64} height={64} alt="Excellence Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">Excellence</div>
|
||||
</div>
|
||||
<div className="value-item">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598ed19f8b3ed79933a38_communication-icon-quantum-webflow-template.svg" width={64} height={64} alt="Communication Icon - Quantum | Webflow Template" data-wf--icon-square--variant="small" className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f" />
|
||||
<div className="display-4 medium text-titles">Communication</div>
|
||||
</div>
|
||||
{ABOUT_VALUES.map((value) => (
|
||||
<div key={value.title} className="value-item">
|
||||
<Image
|
||||
src={value.icon}
|
||||
width={64}
|
||||
height={64}
|
||||
alt={value.title}
|
||||
data-wf--icon-square--variant="small"
|
||||
className="icon-square w-variant-9e5d53ad-bad6-e5fc-88e0-62e38939214f"
|
||||
/>
|
||||
<div className="display-4 medium text-titles">{value.title}</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,283 +1,105 @@
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
|
||||
import { TEAM_MEMBERS } from "@/lib/team-data"
|
||||
|
||||
export default function TeamSection() {
|
||||
return (
|
||||
<section className="section overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="a61686b5-826c-1f8d-dc8d-43cbbec7dcb0" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _650px center">
|
||||
<div
|
||||
data-w-id="a61686b5-826c-1f8d-dc8d-43cbbec7dcb0"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="inner-container _650px center"
|
||||
>
|
||||
<div className="text-center">
|
||||
<div className="subtitle">Team members</div>
|
||||
<div className="subtitle">Build Areas</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
Meet our team</h2>
|
||||
<h2>我们正在建设的四个核心能力面</h2>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla amet viverra tortor pharetra. </p>
|
||||
这里不是虚构团队介绍,而是 DAL Code 当前最重要的产品与工程能力切面。每一层都在决定这是不是一个能长期交付结果的 AI IDE。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-w-id="b285eee5-c66b-a051-c7d9-48089305f267" style={{"opacity": "0", "filter": "blur(8px)"}} className="team-members-container">
|
||||
<div
|
||||
data-w-id="b285eee5-c66b-a051-c7d9-48089305f267"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="team-members-container"
|
||||
>
|
||||
<div className="corner-gradient-container">
|
||||
<div className="border-wrapper">
|
||||
<div className="collection-list-wrapper w-dyn-list">
|
||||
<div role="list" className="team-members-grid w-dyn-items">
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="w-layout-grid team-member-item">
|
||||
<Link href="/team-members/john-carter-wy738" className="avatar-link w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5ff7b59be67bb3ac207_john-carter-avatar-quantum-webflow-template.jpg" alt="John Carter" sizes="(max-width: 767px) 100vw, (max-width: 991px) 727.4140625px, 939.9375px" className="avatar-image fit-cover" fill style={{ objectFit: "cover" }} />
|
||||
</Link>
|
||||
<div className="team-member-item-content">
|
||||
<div className="team-member-heading">
|
||||
<Link href="/team-members/john-carter-wy738" className="heading-link w-inline-block">
|
||||
<h3 className="display-5">John Carter</h3>
|
||||
</Link>
|
||||
<div className="team-member-job-title">
|
||||
<div className="subtitle">CEO & Founder</div>
|
||||
{TEAM_MEMBERS.map((member) => (
|
||||
<div key={member.slug} role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="w-layout-grid team-member-item">
|
||||
<Link href={`/team-members/${member.slug}`} className="avatar-link w-inline-block">
|
||||
<Image
|
||||
src={member.image}
|
||||
alt={member.name}
|
||||
sizes="(max-width: 767px) 100vw, (max-width: 991px) 727px, 940px"
|
||||
className="avatar-image fit-cover"
|
||||
fill
|
||||
style={{ objectFit: "cover" }}
|
||||
/>
|
||||
</Link>
|
||||
<div className="team-member-item-content">
|
||||
<div className="team-member-heading">
|
||||
<Link href={`/team-members/${member.slug}`} className="heading-link w-inline-block">
|
||||
<h3 className="display-5">{member.name}</h3>
|
||||
</Link>
|
||||
<div className="team-member-job-title">
|
||||
<div className="subtitle">{member.role}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>{member.bio}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="team-member-buttons-wrapper">
|
||||
<div>
|
||||
<a href="https://x.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 19 18" fill="none" className="social-media-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="team-member-buttons-wrapper">
|
||||
<Link
|
||||
href={`/team-members/${member.slug}`}
|
||||
className="secondary-button small w-inline-block"
|
||||
>
|
||||
<div className="button-content">
|
||||
<div>查看详情</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://linkedin.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="social-media-icon">
|
||||
<path d="M1 2.99134C1 2.41413 1.20271 1.93794 1.60811 1.56277C2.01351 1.18758 2.54055 1 3.18919 1C3.82626 1 4.34169 1.18469 4.73552 1.55411C5.14092 1.93506 5.34363 2.43145 5.34363 3.04329C5.34363 3.5974 5.14672 4.05915 4.7529 4.42857C4.3475 4.80952 3.81467 5 3.15444 5H3.13707C2.49999 5 1.98456 4.80952 1.59073 4.42857C1.19691 4.04762 1 3.56854 1 2.99134ZM1.22587 18.1429V6.57576H5.08301V18.1429H1.22587ZM7.22008 18.1429H11.0772V11.684C11.0772 11.2799 11.1236 10.9682 11.2162 10.7489C11.3784 10.3564 11.6245 10.0245 11.9546 9.75324C12.2847 9.48195 12.6988 9.34632 13.1969 9.34632C14.4942 9.34632 15.1429 10.2179 15.1429 11.961V18.1429H19V11.5108C19 9.8023 18.5946 8.50649 17.7838 7.62337C16.973 6.74026 15.9015 6.2987 14.5695 6.2987C13.0753 6.2987 11.9112 6.93939 11.0772 8.22078V8.25541H11.0598L11.0772 8.22078V6.57576H7.22008C7.24324 6.94516 7.25483 8.09378 7.25483 10.0216C7.25483 11.9495 7.24324 14.6565 7.22008 18.1429Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="w-layout-grid team-member-item">
|
||||
<Link href="/team-members/sophie-moore" className="avatar-link w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5d29b2f76acd088f052_sophie-moore-avatar-quantum-webflow-template.jpg" alt="Sophie Moore" className="avatar-image fit-cover" fill style={{ objectFit: "cover" }} />
|
||||
</Link>
|
||||
<div className="team-member-item-content">
|
||||
<div className="team-member-heading">
|
||||
<Link href="/team-members/sophie-moore" className="heading-link w-inline-block">
|
||||
<h3 className="display-5">Sophie Moore</h3>
|
||||
</Link>
|
||||
<div className="team-member-job-title">
|
||||
<div className="subtitle">
|
||||
Director of Operations</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="team-member-buttons-wrapper">
|
||||
<div>
|
||||
<a href="https://x.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 19 18" fill="none" className="social-media-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://linkedin.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="social-media-icon">
|
||||
<path d="M1 2.99134C1 2.41413 1.20271 1.93794 1.60811 1.56277C2.01351 1.18758 2.54055 1 3.18919 1C3.82626 1 4.34169 1.18469 4.73552 1.55411C5.14092 1.93506 5.34363 2.43145 5.34363 3.04329C5.34363 3.5974 5.14672 4.05915 4.7529 4.42857C4.3475 4.80952 3.81467 5 3.15444 5H3.13707C2.49999 5 1.98456 4.80952 1.59073 4.42857C1.19691 4.04762 1 3.56854 1 2.99134ZM1.22587 18.1429V6.57576H5.08301V18.1429H1.22587ZM7.22008 18.1429H11.0772V11.684C11.0772 11.2799 11.1236 10.9682 11.2162 10.7489C11.3784 10.3564 11.6245 10.0245 11.9546 9.75324C12.2847 9.48195 12.6988 9.34632 13.1969 9.34632C14.4942 9.34632 15.1429 10.2179 15.1429 11.961V18.1429H19V11.5108C19 9.8023 18.5946 8.50649 17.7838 7.62337C16.973 6.74026 15.9015 6.2987 14.5695 6.2987C13.0753 6.2987 11.9112 6.93939 11.0772 8.22078V8.25541H11.0598L11.0772 8.22078V6.57576H7.22008C7.24324 6.94516 7.25483 8.09378 7.25483 10.0216C7.25483 11.9495 7.24324 14.6565 7.22008 18.1429Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="w-layout-grid team-member-item">
|
||||
<Link href="/team-members/lilly-woods" className="avatar-link w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5b658f5ca9f60fd5e16_lilly-woods-avatar-quantum-webflow-template.jpg" alt="Lilly Woods" className="avatar-image fit-cover" fill style={{ objectFit: "cover" }} />
|
||||
</Link>
|
||||
<div className="team-member-item-content">
|
||||
<div className="team-member-heading">
|
||||
<Link href="/team-members/lilly-woods" className="heading-link w-inline-block">
|
||||
<h3 className="display-5">Lilly Woods</h3>
|
||||
</Link>
|
||||
<div className="team-member-job-title">
|
||||
<div className="subtitle">Lead UX Designer</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="team-member-buttons-wrapper">
|
||||
<div>
|
||||
<a href="https://x.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 19 18" fill="none" className="social-media-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://linkedin.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="social-media-icon">
|
||||
<path d="M1 2.99134C1 2.41413 1.20271 1.93794 1.60811 1.56277C2.01351 1.18758 2.54055 1 3.18919 1C3.82626 1 4.34169 1.18469 4.73552 1.55411C5.14092 1.93506 5.34363 2.43145 5.34363 3.04329C5.34363 3.5974 5.14672 4.05915 4.7529 4.42857C4.3475 4.80952 3.81467 5 3.15444 5H3.13707C2.49999 5 1.98456 4.80952 1.59073 4.42857C1.19691 4.04762 1 3.56854 1 2.99134ZM1.22587 18.1429V6.57576H5.08301V18.1429H1.22587ZM7.22008 18.1429H11.0772V11.684C11.0772 11.2799 11.1236 10.9682 11.2162 10.7489C11.3784 10.3564 11.6245 10.0245 11.9546 9.75324C12.2847 9.48195 12.6988 9.34632 13.1969 9.34632C14.4942 9.34632 15.1429 10.2179 15.1429 11.961V18.1429H19V11.5108C19 9.8023 18.5946 8.50649 17.7838 7.62337C16.973 6.74026 15.9015 6.2987 14.5695 6.2987C13.0753 6.2987 11.9112 6.93939 11.0772 8.22078V8.25541H11.0598L11.0772 8.22078V6.57576H7.22008C7.24324 6.94516 7.25483 8.09378 7.25483 10.0216C7.25483 11.9495 7.24324 14.6565 7.22008 18.1429Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="w-layout-grid team-member-item">
|
||||
<Link href="/team-members/matt-cannon" className="avatar-link w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5268e58fa10010ce586_matt-cannon-avatar-quantum-webflow-template.jpg" alt="Matt Cannon" sizes="(max-width: 767px) 100vw, (max-width: 991px) 727.4140625px, 939.9375px" className="avatar-image fit-cover" fill style={{ objectFit: "cover" }} />
|
||||
</Link>
|
||||
<div className="team-member-item-content">
|
||||
<div className="team-member-heading">
|
||||
<Link href="/team-members/matt-cannon" className="heading-link w-inline-block">
|
||||
<h3 className="display-5">Matt Cannon</h3>
|
||||
</Link>
|
||||
<div className="team-member-job-title">
|
||||
<div className="subtitle">
|
||||
VP of engineering</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="team-member-buttons-wrapper">
|
||||
<div>
|
||||
<a href="https://x.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 19 18" fill="none" className="social-media-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M7.04543 9.42969L0.0390625 0.25H5.98663L10.1792 5.74312L14.8487 0.25H17.7333L11.5439 7.53115L18.9618 17.25H13.0143L8.41014 11.2177L3.28238 17.25H0.397729L7.04543 9.42969ZM13.8802 15.4998L3.57671 2.00024H5.12071L15.4242 15.4998H13.8802Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://linkedin.com" className="social-square-icon-link w-variant-09232bd2-04da-efea-f377-662291aed853 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="social-square-icon">
|
||||
<div className="social-square-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 20 20" fill="none" className="social-media-icon">
|
||||
<path d="M1 2.99134C1 2.41413 1.20271 1.93794 1.60811 1.56277C2.01351 1.18758 2.54055 1 3.18919 1C3.82626 1 4.34169 1.18469 4.73552 1.55411C5.14092 1.93506 5.34363 2.43145 5.34363 3.04329C5.34363 3.5974 5.14672 4.05915 4.7529 4.42857C4.3475 4.80952 3.81467 5 3.15444 5H3.13707C2.49999 5 1.98456 4.80952 1.59073 4.42857C1.19691 4.04762 1 3.56854 1 2.99134ZM1.22587 18.1429V6.57576H5.08301V18.1429H1.22587ZM7.22008 18.1429H11.0772V11.684C11.0772 11.2799 11.1236 10.9682 11.2162 10.7489C11.3784 10.3564 11.6245 10.0245 11.9546 9.75324C12.2847 9.48195 12.6988 9.34632 13.1969 9.34632C14.4942 9.34632 15.1429 10.2179 15.1429 11.961V18.1429H19V11.5108C19 9.8023 18.5946 8.50649 17.7838 7.62337C16.973 6.74026 15.9015 6.2987 14.5695 6.2987C13.0753 6.2987 11.9112 6.93939 11.0772 8.22078V8.25541H11.0598L11.0772 8.22078V6.57576H7.22008C7.24324 6.94516 7.25483 8.09378 7.25483 10.0216C7.25483 11.9495 7.24324 14.6565 7.22008 18.1429Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div className="social-square-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="4195d06f-0501-ccc7-1fa5-38438a921812" style={{"opacity": "0", "filter": "blur(8px)"}} className="buttons-row">
|
||||
<Link id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" href="/careers" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
Join our team</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="button-icon-bg">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside">
|
||||
<div className="mg-top-40px text-center">
|
||||
<Link href="/careers" className="tertiary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>查看当前建设方向</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="100%"
|
||||
viewBox="0 0 17 17"
|
||||
fill="none"
|
||||
className="squared-icon"
|
||||
>
|
||||
<path
|
||||
d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="square"
|
||||
/>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800" />
|
||||
<div className="button-icon-bg-inside bg-neutral-600" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,203 +1,134 @@
|
||||
import Link from "next/link"
|
||||
|
||||
import { CAREERS } from "@/lib/careers-data"
|
||||
|
||||
const CAREERS_BY_DEPARTMENT = CAREERS.reduce<Record<string, typeof CAREERS>>((acc, career) => {
|
||||
if (!acc[career.department]) {
|
||||
acc[career.department] = []
|
||||
}
|
||||
|
||||
acc[career.department].push(career)
|
||||
return acc
|
||||
}, {})
|
||||
const CAREER_GROUPS = Object.entries(CAREERS_BY_DEPARTMENT)
|
||||
|
||||
export default function ValuesSection() {
|
||||
return (
|
||||
<section id="more-positions" className="section pd-top-0 overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div className="inner-container _1068px center">
|
||||
<div data-w-id="5c1fa9c3-1e74-faeb-fdc1-94202ec40445" style={{"opacity": "0", "filter": "blur(8px)"}} className="title-left-content-right">
|
||||
<div
|
||||
data-w-id="5c1fa9c3-1e74-faeb-fdc1-94202ec40445"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="title-left-content-right"
|
||||
>
|
||||
<div className="inner-container _460px">
|
||||
<h2>More positions</h2>
|
||||
<h2>当前重点建设方向</h2>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla. </p>
|
||||
<p>我们把官网里的“职位”改成能力建设清单,用更真实的方式展示 DAL Code 接下来 12 个月的投入重点。</p>
|
||||
</div>
|
||||
</div>
|
||||
<Link href="/careers" className="tertiary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
See all positions</div>
|
||||
<div>查看全部方向</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="100%"
|
||||
viewBox="0 0 17 17"
|
||||
fill="none"
|
||||
className="squared-icon"
|
||||
>
|
||||
<path
|
||||
d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="square"
|
||||
/>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside bg-neutral-600">
|
||||
</div>
|
||||
<div className="button-icon-bg bg-neutral-800" />
|
||||
<div className="button-icon-bg-inside bg-neutral-600" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-w-id="21838807-4067-5a92-54da-582050a56a5c" style={{"opacity": "0", "filter": "blur(8px)"}} className="container-large">
|
||||
<div
|
||||
data-w-id="21838807-4067-5a92-54da-582050a56a5c"
|
||||
style={{ opacity: "0", filter: "blur(8px)" }}
|
||||
className="container-large"
|
||||
>
|
||||
<div className="corner-gradient-container">
|
||||
<div className="box-wrapper">
|
||||
<div className="border-wrapper">
|
||||
<div className="box-grid">
|
||||
<div className="box-heading-wrapper">
|
||||
<h3 className="display-4">Research</h3>
|
||||
</div>
|
||||
<div className="w-dyn-list">
|
||||
<div role="list" className="careers-grid w-dyn-items">
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<Link href="/careers/ai-research-scientist" className="career-item w-inline-block">
|
||||
<div>
|
||||
<h3 className="display-4">AI Research Scientist</h3>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="career-item-details">
|
||||
<div className="item-details">New York, NY</div>
|
||||
<div className="item-details-divider">
|
||||
</div>
|
||||
<div className="item-details">Full time</div>
|
||||
{CAREER_GROUPS.map(([department, roles], index) => (
|
||||
<div key={department} className="border-wrapper">
|
||||
<div className="box-grid">
|
||||
<div className="box-heading-wrapper">
|
||||
<h3 className="display-4">{department}</h3>
|
||||
</div>
|
||||
<div className="w-dyn-list">
|
||||
<div role="list" className="careers-grid w-dyn-items">
|
||||
{roles.map((career) => (
|
||||
<div key={career.slug} role="listitem" className="flex-item w-dyn-item">
|
||||
<Link href={`/careers/${career.slug}`} className="career-item w-inline-block">
|
||||
<div>
|
||||
<h3 className="display-4">{career.title}</h3>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="career-item-details">
|
||||
<div className="item-details">{career.location}</div>
|
||||
<div className="item-details-divider" />
|
||||
<div className="item-details">{career.type}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside bg-neutral-600">
|
||||
</div>
|
||||
</div>
|
||||
<div className="career-item-bg">
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<Link href="/careers/machine-learning-engineer" className="career-item w-inline-block">
|
||||
<div>
|
||||
<h3 className="display-4">Machine Learning Engineer</h3>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="career-item-details">
|
||||
<div className="item-details">Los Angeles, CA</div>
|
||||
<div className="item-details-divider">
|
||||
</div>
|
||||
<div className="item-details">Full time</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="100%"
|
||||
viewBox="0 0 17 17"
|
||||
fill="none"
|
||||
className="squared-icon"
|
||||
>
|
||||
<path
|
||||
d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
strokeLinecap="square"
|
||||
/>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800" />
|
||||
<div className="button-icon-bg-inside bg-neutral-600" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="career-item-bg" />
|
||||
</Link>
|
||||
</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside bg-neutral-600">
|
||||
</div>
|
||||
</div>
|
||||
<div className="career-item-bg">
|
||||
</div>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="box-divider">
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="border-wrapper">
|
||||
<div className="box-grid">
|
||||
<div className="box-heading-wrapper">
|
||||
<h3 className="display-4">Engineering</h3>
|
||||
</div>
|
||||
<div className="w-dyn-list">
|
||||
<div role="list" className="careers-grid w-dyn-items">
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<Link href="/careers/ai-infrastructure-engineer" className="career-item w-inline-block">
|
||||
<div>
|
||||
<h3 className="display-4">AI Infrastructure Engineer</h3>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="career-item-details">
|
||||
<div className="item-details">
|
||||
</div>
|
||||
<div className="item-details-divider">
|
||||
</div>
|
||||
<div className="item-details">Full time</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside bg-neutral-600">
|
||||
</div>
|
||||
</div>
|
||||
<div className="career-item-bg">
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<Link href="/careers/mlops-engineer" className="career-item w-inline-block">
|
||||
<div>
|
||||
<h3 className="display-4">
|
||||
Engineer </h3>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="career-item-details">
|
||||
<div className="item-details">
|
||||
</div>
|
||||
<div className="item-details-divider">
|
||||
</div>
|
||||
<div className="item-details">Full time</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="button-icon-bg bg-neutral-800">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside bg-neutral-600">
|
||||
</div>
|
||||
</div>
|
||||
<div className="career-item-bg">
|
||||
</div>
|
||||
</Link>
|
||||
{index < CAREER_GROUPS.length - 1 ? (
|
||||
<div className="box-divider">
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left" />
|
||||
<div className="corner-gradient-vertical w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,11 +9,14 @@ export default function CtaSection() {
|
||||
<div className="subtitle dark-mode">Newsletter</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2 className="text-titles-dm">
|
||||
Subscribe for cutting-edge AI updates </h2>
|
||||
每月一封,跟进 DAL Code 的产品洞察与建设进度
|
||||
</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p className="text-paragraph-dm">
|
||||
ipsum dolor sit amet consectetur at amet felis nulla molestie non viverra diam sed augue gravida ante risus pulvinar diam turpis ut bibendum ut velit felis at nisl lectus. </p>
|
||||
我们会把官网文章、关键产品判断、路线图变化和典型场景拆解整理成简洁摘要。
|
||||
中文优先,英文技术术语保留,不发泛泛行业噪音。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="corner-gradient-container">
|
||||
@@ -31,7 +34,8 @@ export default function CtaSection() {
|
||||
</path>
|
||||
</svg>
|
||||
<div className="text-color-neutral-500">
|
||||
One email per month — No spam! </div>
|
||||
每月 1 封,只发和产品建设直接相关的内容
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="corner-gradient-wrapper hidden-on-tablet">
|
||||
|
||||
@@ -9,21 +9,28 @@ export default function HeroSection() {
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="1d4184ff-9d8d-d0a9-7964-1fe6bc1712ef" style={{ opacity: "0", filter: "blur(8px)" }} className="title-left-content-right">
|
||||
<div className="inner-container _480px">
|
||||
<div className="subtitle">Blog</div>
|
||||
<div className="subtitle">产品洞察</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h1>Latest news</h1>
|
||||
<h1>把 DAL Code 的产品判断、能力边界和建设路径讲清楚</h1>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>Lorem ipsum dolor sit amet consectetur nec quis suspendisse nulla.</p>
|
||||
<p>
|
||||
这里不是泛 AI 新闻聚合,而是围绕 Intent-to-Code、Mission Mode、Smart Routing、
|
||||
Skills 与中文开发者工作流持续输出的产品文章。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<form action="/search" className="form-block _365px position-relative---z-index-1 w-form">
|
||||
<label htmlFor="search" className="hidden">Search</label>
|
||||
<input className="input w-input" maxLength={256} name="query" placeholder="Search for articles…" type="search" id="search" required />
|
||||
<div className="button-inside-input-wrapper left-mbp">
|
||||
<input type="submit" className="form-button inside-input light-mode w-button" value="Search" />
|
||||
<div className="inner-container _355px position-relative---z-index-1">
|
||||
<p>
|
||||
当前首批上线 {BLOG_POSTS.length} 篇文章,按产品定位、Agent 与平台能力三个主题组织,
|
||||
方便快速理解 DAL Code 到底解决什么问题。
|
||||
</p>
|
||||
<div className="mg-top-2x-extra-small">
|
||||
<p className="text-color-neutral-500">
|
||||
推荐先读置顶两篇,再继续往下看多模型路由、Open Core 与 Skills 平台的完整逻辑。
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="1d4184ff-9d8d-d0a9-7964-1fe6bc1712fd" style={{ opacity: "0", filter: "blur(8px)" }} className="w-dyn-list">
|
||||
|
||||
@@ -5,9 +5,9 @@ import { BLOG_POSTS, BLOG_CATEGORIES } from "@/lib/blog-data"
|
||||
import BlogCard from "@/components/BlogCard"
|
||||
|
||||
export default function PostsGridSection() {
|
||||
const [activeCategory, setActiveCategory] = useState("All")
|
||||
const [activeCategory, setActiveCategory] = useState<(typeof BLOG_CATEGORIES)[number]>(BLOG_CATEGORIES[0])
|
||||
|
||||
const filtered = activeCategory === "All"
|
||||
const filtered = activeCategory === BLOG_CATEGORIES[0]
|
||||
? BLOG_POSTS
|
||||
: BLOG_POSTS.filter((p) => p.category === activeCategory)
|
||||
|
||||
@@ -15,7 +15,7 @@ export default function PostsGridSection() {
|
||||
<section className="section">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="41a231e8-d013-bd0a-0639-c179719a51f6" style={{ opacity: "0", filter: "blur(8px)" }} className="title-left-content-right align-center">
|
||||
<h2>All articles</h2>
|
||||
<h2>全部文章</h2>
|
||||
<div className="category-list-wrapper">
|
||||
<div role="list" className="category-list">
|
||||
{BLOG_CATEGORIES.map((cat) => (
|
||||
@@ -24,6 +24,7 @@ export default function PostsGridSection() {
|
||||
className={`category-link${activeCategory === cat ? " w--current" : ""}`}
|
||||
onClick={() => setActiveCategory(cat)}
|
||||
type="button"
|
||||
aria-pressed={activeCategory === cat}
|
||||
>
|
||||
{cat}
|
||||
</button>
|
||||
@@ -33,11 +34,17 @@ export default function PostsGridSection() {
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="e99a5296-8389-ce52-d99c-66f9d94e1815" style={{ opacity: "0", filter: "blur(8px)" }} className="w-dyn-list">
|
||||
<div role="list" className="blog-v1-grid w-dyn-items">
|
||||
{filtered.map((post) => (
|
||||
<BlogCard key={post.slug} post={post} variant="grid" />
|
||||
))}
|
||||
</div>
|
||||
{filtered.length > 0 ? (
|
||||
<div role="list" className="blog-v1-grid w-dyn-items">
|
||||
{filtered.map((post) => (
|
||||
<BlogCard key={post.slug} post={post} variant="grid" />
|
||||
))}
|
||||
</div>
|
||||
) : (
|
||||
<div className="inner-container _430px">
|
||||
<p>这个分类下的内容还在整理中,先看看其他文章。</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,16 +2,11 @@
|
||||
|
||||
import { useState } from "react"
|
||||
import Link from "next/link"
|
||||
|
||||
const FAQS = [
|
||||
{ q: "How do I get started with our service?", a: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat." },
|
||||
{ q: "Can AI solutions help my business?", a: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat." },
|
||||
{ q: "How is ethical AI development ensured?", a: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat." },
|
||||
{ q: "What role does QuantumLab Computing play in AI research?", a: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat." },
|
||||
]
|
||||
import { CONTACT_FAQS } from "@/lib/site-content"
|
||||
|
||||
export default function CardsSection() {
|
||||
const [openIndex, setOpenIndex] = useState<number | null>(null)
|
||||
|
||||
return (
|
||||
<section className="section-small">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
@@ -19,20 +14,23 @@ export default function CardsSection() {
|
||||
<div className="sticky-top static-mbl">
|
||||
<div data-w-id="e69dfbb3-1a44-4cc6-11e0-94df71efbf76" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _260px _100-mbl">
|
||||
<div className="subtitle">
|
||||
</div>
|
||||
FAQ
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>Have questions?</h2>
|
||||
<h2>常见问题</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla. </p>
|
||||
如果下面几条还不够覆盖你的情况,直接提交表单会更高效。
|
||||
</p>
|
||||
</div>
|
||||
<div className="mg-top-2x-extra-small">
|
||||
<div className="buttons-row left">
|
||||
<a id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" data-wf--primary-button--variant="base" data-w-id="99805214-dd54-e7f3-2549-05c0df1040fb" href="mailto:support@quantum.com" className="primary-button w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<Link id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" data-wf--primary-button--variant="base" href="#contact-form" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
Get support</div>
|
||||
提交需求
|
||||
</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
@@ -44,22 +42,22 @@ export default function CardsSection() {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-layout-grid faqs-v1-grid">
|
||||
{FAQS.map((faq, i) => (
|
||||
{CONTACT_FAQS.map((faq, i) => (
|
||||
<div key={i} className="card-accordion-v1-wrapper sibling-blur-item" onClick={() => setOpenIndex(openIndex === i ? null : i)} style={{ cursor: "pointer" }}>
|
||||
<div className="card accordion-card-v1">
|
||||
<div className="accordion-number">
|
||||
<div>{String(i + 1).padStart(2, "0")}</div>
|
||||
</div>
|
||||
<div className="accordion-content">
|
||||
<h3 className="accordion-title">{faq.q}</h3>
|
||||
<h3 className="accordion-title">{faq.question}</h3>
|
||||
<div className="accordion-body" style={{ maxHeight: openIndex === i ? "200px" : "0px", overflow: "hidden", transition: "max-height 0.3s ease" }}>
|
||||
<p className="mg-top-4x-extra-small">{faq.a}</p>
|
||||
<p className="mg-top-4x-extra-small">{faq.answer}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="accordion-arrow" style={{ transform: openIndex === i ? "rotate(180deg)" : "rotate(0deg)", transition: "transform 0.3s ease" }}>
|
||||
|
||||
@@ -1,5 +1,36 @@
|
||||
import LottiePlayer from "@/components/LottiePlayer"
|
||||
import Link from "next/link"
|
||||
import { CONTACT_CHANNELS } from "@/lib/site-content"
|
||||
|
||||
const CONTACT_CARDS = [
|
||||
{
|
||||
title: "产品试用 / Demo",
|
||||
description: "适合还在判断 DAL Code 是否匹配当前研发流程的团队,建议先从一个真实任务场景开始聊。",
|
||||
linkText: "提交试用需求",
|
||||
href: CONTACT_CHANNELS[0].href,
|
||||
external: false,
|
||||
lottie:
|
||||
"/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28ff8a28b3e0d6614fe9b_help-support-animation-row-wave.json",
|
||||
},
|
||||
{
|
||||
title: "企业方案 / 安全合规",
|
||||
description: "适合已经明确关注私有化、审批流、权限治理、采购流程和团队协作边界的负责人。",
|
||||
linkText: "说明企业约束",
|
||||
href: CONTACT_CHANNELS[1].href,
|
||||
external: false,
|
||||
lottie:
|
||||
"/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28ff844db76df2f0ca451_press-media-animation-row-wave.json",
|
||||
},
|
||||
{
|
||||
title: "生态合作 / Skills 共建",
|
||||
description: "适合希望围绕插件、模板、知识工作流和开发者社区共同建设产品生态的伙伴。",
|
||||
linkText: "访问 DeepAILab",
|
||||
href: CONTACT_CHANNELS[2].href,
|
||||
external: true,
|
||||
lottie:
|
||||
"/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28ff8806a1552f46e35ac_sales-inquiries-animation-visual-row.json",
|
||||
},
|
||||
] as const
|
||||
|
||||
export default function FormSection() {
|
||||
return (
|
||||
@@ -7,82 +38,55 @@ export default function FormSection() {
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="37f8537e-c33a-f3ad-764c-d5c8b3ff1b64" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _650px center">
|
||||
<div className="text-center">
|
||||
<div className="subtitle">Contact us</div>
|
||||
<div className="subtitle">沟通入口</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
Reach us directly</h2>
|
||||
选择一个更适合你的沟通起点
|
||||
</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur ut consequat luctus a ornare auctor mauris necolmer doloe. </p>
|
||||
如果你能提前说明团队规模、技术栈、希望自动化的环节和安全约束,我们会更容易判断 DAL Code 适合从哪里切入。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="37f8537e-c33a-f3ad-764c-d5c8b3ff1b6a" style={{"opacity": "0", "filter": "blur(8px)"}} className="w-layout-grid contact-cards-grid-v1">
|
||||
<a data-w-id="c3b7cbc7-6bb0-417d-8af2-d16c83e09934" href="mailto:support@quantumlab.com" className="card contact-card-v1 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="contact-card-v1-content">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28ff8a28b3e0d6614fe9b_help-support-animation-row-wave.json" className="contact-card-v1-image" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">Help & support</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p className="text-paragraph">
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla amet viverra tortor. </p>
|
||||
{CONTACT_CARDS.map((card) => {
|
||||
const body = (
|
||||
<>
|
||||
<div className="contact-card-v1-content">
|
||||
<LottiePlayer src={card.lottie} className="contact-card-v1-image" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">{card.title}</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p className="text-paragraph">{card.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="contact-card-v1-link-wrapper">
|
||||
<div className="contact-link-text">support@quantumlab.com</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-card-link-bg">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a data-w-id="9fa843fd-acac-5e66-0694-1c416deeff73" href="mailto:media@quantumlab.com" className="card contact-card-v1 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="contact-card-v1-content">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28ff844db76df2f0ca451_press-media-animation-row-wave.json" className="contact-card-v1-image" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">Press & media</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p className="text-paragraph">
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla amet viverra tortor. </p>
|
||||
<div className="contact-card-v1-link-wrapper">
|
||||
<div className="contact-link-text">{card.linkText}</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-card-link-bg">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="contact-card-v1-link-wrapper">
|
||||
<div className="contact-link-text">media@quantumlab.com</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-card-link-bg">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<a data-w-id="4355aa2b-5646-3ff5-91b3-2f90df58ae42" href="mailto:sales@quantumlab.com" className="card contact-card-v1 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="contact-card-v1-content">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d28ff8806a1552f46e35ac_sales-inquiries-animation-visual-row.json" className="contact-card-v1-image" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">Sales & inquiries</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p className="text-paragraph">
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla amet viverra tortor. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="contact-card-v1-link-wrapper">
|
||||
<div className="contact-link-text">sales@quantumlab.com</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-card-link-bg">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</>
|
||||
)
|
||||
|
||||
return card.external ? (
|
||||
<a key={card.title} data-w-id={`contact-card-${card.title}`} href={card.href} className="card contact-card-v1 w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
{body}
|
||||
</a>
|
||||
) : (
|
||||
<Link key={card.title} href={card.href} className="card contact-card-v1 w-inline-block">
|
||||
{body}
|
||||
</Link>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
import Link from "next/link"
|
||||
import ContactForm from "@/components/ContactForm"
|
||||
import { CONTACT_CHANNELS, SITE_BRAND } from "@/lib/site-content"
|
||||
|
||||
const HERO_CHANNELS = [
|
||||
{
|
||||
...CONTACT_CHANNELS[0],
|
||||
headline: "申请产品演示",
|
||||
icon: "mail",
|
||||
},
|
||||
{
|
||||
...CONTACT_CHANNELS[1],
|
||||
headline: "私有化与采购",
|
||||
icon: "phone",
|
||||
},
|
||||
] as const
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
@@ -7,14 +21,17 @@ export default function HeroSection() {
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div className="w-layout-grid contact-grid">
|
||||
<div data-w-id="f1d777b6-f289-d52f-017b-af3a4a212cde" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _430px _100-tablet">
|
||||
<div className="subtitle">Get in touch</div>
|
||||
<div className="subtitle">Contact</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h1>
|
||||
Contact us</h1>
|
||||
和 {SITE_BRAND} 团队聊聊你的真实场景
|
||||
</h1>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur laculis nunc risus sed eu eget quam sodales adipiscing purus erat quisque arcu adipiscing. </p>
|
||||
无论你想申请试用、评估企业方案,还是讨论 Skills / 插件生态,都建议先把团队背景、
|
||||
代码栈、交付约束和预期目标告诉我们,后续沟通会更高效。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="w-node-_77c06870-1d0c-5ed5-aea2-38d8dab4dc54-60eb3ba7" className="position-relative---z-index-2">
|
||||
@@ -36,80 +53,77 @@ export default function HeroSection() {
|
||||
</div>
|
||||
<div id="w-node-a2c7d873-a197-1a9e-135d-10f912dd9a40-60eb3ba7" data-w-id="a2c7d873-a197-1a9e-135d-10f912dd9a40" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _430px _100-tablet">
|
||||
<div className="w-layout-grid contact-links-grid">
|
||||
<div className="corner-gradient-container">
|
||||
<a data-w-id="15c69e95-b060-7429-fd6f-a7d6b84c5b9f" href="mailto:info@quantumlab.com" className="contact-v1-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="contact-icon-wrapper">
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-icon-bg">
|
||||
{HERO_CHANNELS.map((channel) => {
|
||||
const isExternal = channel.href.startsWith("http")
|
||||
|
||||
const content = (
|
||||
<>
|
||||
<div className="contact-icon-wrapper">
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-icon-bg">
|
||||
</div>
|
||||
{channel.icon === "mail" ? (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" className="contact-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M0 2H24V4.31556L12.0001 10.861L0 4.31546V2ZM0 6.59364V22H24V6.59373L12.0001 13.1391L0 6.59364Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
) : (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 32 33" fill="none" className="contact-icon">
|
||||
<g clipPath="url(#contact-hero-phone)">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M17.4208 23.0719L19.6275 19.3745L20.2074 18.403L21.2951 18.7137L30.7718 21.4215L31.9775 21.7659L31.8283 23.011L30.907 30.7015L30.7429 32.0718L29.3648 31.9954C24.7899 31.7419 20.2596 30.4521 16.1565 28.1239C13.8427 26.8111 11.6667 25.1692 9.69696 23.1995C7.72725 21.2298 6.08529 19.0538 4.77246 16.74C2.44438 12.6369 1.15446 8.1065 0.901036 3.53162L0.824707 2.1536L2.19504 1.98942L9.8854 1.06812L11.1305 0.918945L11.4751 2.12475L14.1827 11.6014L14.4934 12.6892L13.522 13.269L9.82445 15.4758C10.8063 16.9482 11.9474 18.3468 13.2482 19.6476C14.5492 20.9486 15.9481 22.0899 17.4208 23.0719Z" fill="currentColor">
|
||||
</path>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="contact-hero-phone">
|
||||
<rect width="32" height="32" fill="white" transform="translate(0 0.5)" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
)}
|
||||
</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" className="contact-icon">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M0 2H24V4.31556L12.0001 10.861L0 4.31546V2ZM0 6.59364V22H24V6.59373L12.0001 13.1391L0 6.59364Z" fill="currentColor">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="contact-v1-link-content">
|
||||
<div>Email address</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<div className="display-2 medium text-titles">info@quantumlab.com</div>
|
||||
<div className="contact-v1-link-content">
|
||||
<div>{channel.title}</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<div className="display-2 medium text-titles">{channel.headline}</div>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>{channel.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bottom-right-button-wrapper">
|
||||
<div className="icon-button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
|
||||
return (
|
||||
<div key={channel.title} className={`corner-gradient-container${channel.icon === "phone" ? " row" : ""}`}>
|
||||
{isExternal ? (
|
||||
<a data-w-id={`contact-channel-${channel.title}`} href={channel.href} className="contact-v1-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
{content}
|
||||
</a>
|
||||
) : (
|
||||
<Link href={channel.href} className="contact-v1-link w-inline-block">
|
||||
{content}
|
||||
</Link>
|
||||
)}
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bottom-right-button-wrapper">
|
||||
<div className="icon-button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="corner-gradient-container row">
|
||||
<a data-w-id="4e3cabf1-a0a7-6659-c002-9e212a09258e" href="tel:(123)456-7890" className="contact-v1-link w-inline-block" target="_blank" rel="noopener noreferrer">
|
||||
<div className="contact-icon-wrapper">
|
||||
<div style={{"width": "0%", "height": "100%"}} className="contact-icon-bg">
|
||||
</div>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 32 33" fill="none" className="contact-icon">
|
||||
<g clipPath="url(#clip0_16077_4034)">
|
||||
<path fillRule="evenodd" clipRule="evenodd" d="M17.4208 23.0719L19.6275 19.3745L20.2074 18.403L21.2951 18.7137L30.7718 21.4215L31.9775 21.7659L31.8283 23.011L30.907 30.7015L30.7429 32.0718L29.3648 31.9954C24.7899 31.7419 20.2596 30.4521 16.1565 28.1239C13.8427 26.8111 11.6667 25.1692 9.69696 23.1995C7.72725 21.2298 6.08529 19.0538 4.77246 16.74C2.44438 12.6369 1.15446 8.1065 0.901036 3.53162L0.824707 2.1536L2.19504 1.98942L9.8854 1.06812L11.1305 0.918945L11.4751 2.12475L14.1827 11.6014L14.4934 12.6892L13.522 13.269L9.82445 15.4758C10.8063 16.9482 11.9474 18.3468 13.2482 19.6476C14.5492 20.9486 15.9481 22.0899 17.4208 23.0719Z" fill="currentColor">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="contact-v1-link-content">
|
||||
<div>Phone number</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<div className="display-2 medium text-titles">(123) 456-7890</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bottom-right-button-wrapper">
|
||||
<div className="icon-button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<div data-wf--corner-gradient-outline--variant="small" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal w-variant-8f36765c-221f-a254-35b4-28a5852d67d7 bottom-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,26 @@
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import { BLOG_POSTS } from "@/lib/blog-data"
|
||||
|
||||
export default function BlogPreviewSection() {
|
||||
const featured = BLOG_POSTS.slice(0, 2)
|
||||
|
||||
return (
|
||||
<section className="section overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="b227046f-7b8d-96be-04ed-4ad8f3500f81" style={{"opacity": "0", "filter": "blur(8px)"}} className="title-left-content-right">
|
||||
<div className="inner-container _480px">
|
||||
<div className="subtitle">
|
||||
</div>
|
||||
<div className="subtitle">Insights</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
Our latest news & articles </h2>
|
||||
<h2>把产品判断写成文章,而不是散落在对话里</h2>
|
||||
</div>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla. </p>
|
||||
<p>这些内容围绕 DAL Code 的产品隐喻、Agent 执行、多模型路由和 Skills 平台展开。</p>
|
||||
</div>
|
||||
</div>
|
||||
<Link id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" href="/blog" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
See all articles</div>
|
||||
<div>查看全部文章</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
@@ -38,106 +37,48 @@ export default function BlogPreviewSection() {
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="f1b0018b-51d6-aaa6-2d43-c2ee184868a3" style={{"opacity": "0", "filter": "blur(8px)"}} className="w-dyn-list">
|
||||
<div role="list" className="w-dyn-items">
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="blog-featured-v1-wrapper">
|
||||
<div className="border-wrapper">
|
||||
<Link href="/blog-posts/ai-powered-predictive-models-and-their-impact-across-industries" className="blog-card-v1 w-inline-block">
|
||||
<div className="blog-v1-image-wrapper">
|
||||
<Image alt="AI-powAI-powered predictive models and their impact across industries" src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7e2a643b738b2cb06fc_ai-powered-predictive-models-and-their-impact-thumbnail-quantum-webflow-template.png" sizes="(max-width: 767px) 100vw, (max-width: 991px) 95vw, 939.96533203125px" className="image" fill style={{ objectFit: "cover" }} />
|
||||
</div>
|
||||
<div className="blog-v1-content">
|
||||
<div className="inner-container _420px">
|
||||
<h3 className="display-6">AI-powered predictive models and their impact across industries </h3>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p className="text-paragraph">
|
||||
ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque. </p>
|
||||
{featured.map((post) => (
|
||||
<div key={post.slug} role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="blog-featured-v1-wrapper">
|
||||
<div className="border-wrapper">
|
||||
<Link href={`/blog-posts/${post.slug}`} className="blog-card-v1 w-inline-block">
|
||||
<div className="blog-v1-image-wrapper">
|
||||
<Image alt={post.imageAlt} src={post.image} sizes="(max-width: 767px) 100vw, (max-width: 991px) 95vw, 939.96533203125px" className="image" fill style={{ objectFit: "cover" }} />
|
||||
</div>
|
||||
<div className="blog-v1-content">
|
||||
<div className="inner-container _420px">
|
||||
<h3 className="display-6">{post.title}</h3>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p className="text-paragraph">{post.excerpt}</p>
|
||||
</div>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="blog-details-wrapper">
|
||||
<div className="item-details">{post.date}</div>
|
||||
<div className="item-details-divider">·</div>
|
||||
<div className="item-details">{post.category}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="blog-details-wrapper">
|
||||
<div className="item-details">
|
||||
, 2025 </div>
|
||||
<div className="item-details-divider">
|
||||
</div>
|
||||
<div className="item-details">
|
||||
</div>
|
||||
<div className="bottom-right-button-wrapper">
|
||||
<div className="icon-button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
</svg>
|
||||
<div className="icon-button-bg" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bottom-right-button-wrapper">
|
||||
<div className="icon-button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="icon-button-bg">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div data-wf--corner-gradient-outline--variant="base" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal top-left">
|
||||
</Link>
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal bottom-right">
|
||||
<div data-wf--corner-gradient-outline--variant="base" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal top-left" />
|
||||
<div className="corner-gradient-horizontal bottom-left" />
|
||||
<div className="corner-gradient-horizontal top-right" />
|
||||
<div className="corner-gradient-horizontal bottom-right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="listitem" className="flex-item w-dyn-item">
|
||||
<div className="blog-featured-v1-wrapper">
|
||||
<div className="border-wrapper">
|
||||
<Link href="/blog-posts/how-ai-is-shaping-the-future-of-healthcare-and-medicine" className="blog-card-v1 w-inline-block">
|
||||
<div className="blog-v1-image-wrapper">
|
||||
<Image alt="How AI How AI is shaping the future of healthcare and medicine" src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7c24025d4081cbfa426_how-ai-is-shaping-the-future-thumbnail-quantum-webflow-template.png" sizes="(max-width: 767px) 100vw, (max-width: 991px) 95vw, 939.96533203125px" className="image" fill style={{ objectFit: "cover" }} />
|
||||
</div>
|
||||
<div className="blog-v1-content">
|
||||
<div className="inner-container _420px">
|
||||
<h3 className="display-6">How AI is shaping the future of healthcare and medicine </h3>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p className="text-paragraph">
|
||||
ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque. </p>
|
||||
</div>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<div className="blog-details-wrapper">
|
||||
<div className="item-details">
|
||||
, 2025 </div>
|
||||
<div className="item-details-divider">
|
||||
</div>
|
||||
<div className="item-details">
|
||||
Applications</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bottom-right-button-wrapper">
|
||||
<div className="icon-button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="icon-button-bg">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
<div data-wf--corner-gradient-outline--variant="base" className="corner-gradient-wrapper">
|
||||
<div className="corner-gradient-horizontal top-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal bottom-left">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal top-right">
|
||||
</div>
|
||||
<div className="corner-gradient-horizontal bottom-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,21 +6,20 @@ export default function CtaSection() {
|
||||
<section className="cta-section v1">
|
||||
<div className="w-layout-blockcontainer container-default position-relative---z-index-1 w-container">
|
||||
<div className="inner-container _430px">
|
||||
<div className="subtitle">Get in touch</div>
|
||||
<div className="subtitle">Next Step</div>
|
||||
<div className="mg-top-3x-extra-small">
|
||||
<h2 className="text-titles-dm">
|
||||
Join our team that is shaping the next era of intelligence </h2>
|
||||
<h2 className="text-titles-dm">把模糊想法交给 DAL Code,先从一次清晰的需求采访开始</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p className="text-paragraph-dm">
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla amet viverra tortor pharetra mauris a maecenas habitant est mattis. </p>
|
||||
这版官网展示的是产品方法论、核心能力和建设方向。下一步最适合的是拉一次产品场景沟通,确认你的团队到底需要 Mission Mode、私有化还是多模型路由。
|
||||
</p>
|
||||
</div>
|
||||
<div className="mg-top-2x-extra-small">
|
||||
<div className="buttons-row left">
|
||||
<Link id="w-node-_83c75c2f-9f22-4125-8dc1-2c204e7d3592-4e7d3592" href="/careers" className="secondary-button w-inline-block">
|
||||
<Link id="w-node-_83c75c2f-9f22-4125-8dc1-2c204e7d3592-4e7d3592" href="/contact" className="secondary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
Join our team</div>
|
||||
<div>联系团队</div>
|
||||
<div className="button-icon-wrapper secondary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
|
||||
+64
-105
@@ -1,7 +1,6 @@
|
||||
import LottiePlayer from "@/components/LottiePlayer"
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import VideoLightbox from "@/components/VideoLightbox"
|
||||
import LottiePlayer from "@/components/LottiePlayer"
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
@@ -10,28 +9,26 @@ export default function HeroSection() {
|
||||
<div className="w-layout-grid hero-v1-grid">
|
||||
<div className="position-relative---z-index-1">
|
||||
<div className="position-relative---z-index-1">
|
||||
<div data-w-id="7939bd8a-3226-7306-66d9-84e6bb7ffc0a" style={{"opacity": "0", "filter": "blur(8px)"}} className="inner-container _480px _100-tablet">
|
||||
<h1>
|
||||
The future beyond human intelligence </h1>
|
||||
<div data-w-id="7939bd8a-3226-7306-66d9-84e6bb7ffc0a" style={{ opacity: "0", filter: "blur(8px)" }} className="inner-container _480px _100-tablet">
|
||||
<div className="subtitle">DAL Code by DeepAILab</div>
|
||||
<h1>让 AI 先把需求问清楚,再把它变成代码</h1>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur convallis ut et in id enim tempus quis amet consequat ut rhoncus morbi ullamcorper faucibus in natoque. </p>
|
||||
DAL Code 不是另一个只会接 prompt 的 AI IDE。
|
||||
它把 Intent Capture、Mission Mode、Smart Routing 和可审批的工程执行组合成一条完整工作流。
|
||||
</p>
|
||||
</div>
|
||||
<div className="mg-top-2x-extra-small">
|
||||
<div className="buttons-row left">
|
||||
<Link id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" href="#about-us" className="primary-button w-inline-block">
|
||||
<Link href="/about" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
About our company</div>
|
||||
<div>理解产品定位</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square" />
|
||||
</svg>
|
||||
<div className="button-icon-bg">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside">
|
||||
</div>
|
||||
<div className="button-icon-bg" />
|
||||
<div className="button-icon-bg-inside" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
@@ -39,116 +36,78 @@ export default function HeroSection() {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-w-id="f313e881-ebc1-d314-e333-4417f945cb80" style={{"opacity": "0", "filter": "blur(8px)"}} className="hero-v1-bg-wrapper">
|
||||
<div data-w-id="f313e881-ebc1-d314-e333-4417f945cb80" style={{ opacity: "0", filter: "blur(8px)" }} className="hero-v1-bg-wrapper">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 381 382" fill="none">
|
||||
<rect x="0.509766" y="305" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="0.509766" y="229" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="0.509766" y="153" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="0.509766" y="77" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="0.509766" y="1" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="76.5098" y="305" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="76.5098" y="229" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="76.5098" y="153" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="76.5098" y="77" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="76.5098" y="1" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="152.51" y="305" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="152.51" y="229" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="152.51" y="153" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="152.51" y="77" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="152.51" y="1" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="228.51" y="305" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="228.51" y="229" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="228.51" y="153" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="228.51" y="77" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="228.51" y="1" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="304.51" y="305" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="304.51" y="229" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="304.51" y="153" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="304.51" y="77" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="304.51" y="1" width={76} height={76} stroke="currentColor">
|
||||
</rect>
|
||||
<rect x="0.509766" y="305" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="0.509766" y="229" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="0.509766" y="153" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="0.509766" y="77" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="0.509766" y="1" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="76.5098" y="305" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="76.5098" y="229" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="76.5098" y="153" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="76.5098" y="77" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="76.5098" y="1" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="152.51" y="305" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="152.51" y="229" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="152.51" y="153" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="152.51" y="77" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="152.51" y="1" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="228.51" y="305" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="228.51" y="229" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="228.51" y="153" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="228.51" y="77" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="228.51" y="1" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="304.51" y="305" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="304.51" y="229" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="304.51" y="153" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="304.51" y="77" width={76} height={76} stroke="currentColor" />
|
||||
<rect x="304.51" y="1" width={76} height={76} stroke="currentColor" />
|
||||
</svg>
|
||||
<div className="hero-v1-bg-gradient">
|
||||
</div>
|
||||
<div className="hero-v1-bg-gradient" />
|
||||
</div>
|
||||
</div>
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1a7d9c54a9b73191bb531_hero-v1-animation-quantum-webflow-template.json" className="hero-v1-lottie" loop autoplay />
|
||||
</div>
|
||||
<div id="about-us" data-w-id="bce231a0-6e79-c8d3-8883-56d99499b3ad" style={{"opacity": "0", "filter": "blur(8px)"}} className="about-section-wrapper">
|
||||
<div id="about-us" data-w-id="bce231a0-6e79-c8d3-8883-56d99499b3ad" style={{ opacity: "0", filter: "blur(8px)" }} className="about-section-wrapper">
|
||||
<div className="about-section-top-content">
|
||||
<div className="subtitle">About us</div>
|
||||
<div className="subtitle">Why DAL Code</div>
|
||||
<div className="mg-top-small">
|
||||
<p className="about-text">
|
||||
Introducing QuantumLab: Pioneering the Future of AI Research. Engineered to push the limits of artificial intelligence, Quantum identifies emerging trends before they disrupt the industry. Choose Research Mode for in-depth, data-driven analysis or Development Mode for groundbreaking algorithm testing. Built with advanced AI systems and state-of-the-art computational power for unparalleled performance.
|
||||
<br />
|
||||
Crafted by top-tier experts and fueled by global collaboration, Quantum is not just a lab—it's the core of tomorrow's innovations, shaping the future one breakthrough at a time.
|
||||
传统 AI 编程工具默认用户已经知道怎么提技术需求,所以产品重点落在补全、改代码和聊天上。
|
||||
DAL Code 把核心交互改成另一件事:让 AI 主动采访用户,把模糊业务目标变成结构化工程任务。
|
||||
然后再通过 Agent、Skills、多模型路由和上下文压缩,把代码、测试、文档和审批一起交付出来。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="about-section-bottom-content">
|
||||
<VideoLightbox
|
||||
thumbnailSrc="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a612636043d8e5dcb04ad0_about-us-video-thumbnail-quantum-webflow-template.jpg"
|
||||
videoUrl="https://www.youtube.com/watch?v=Ojiv9Smi4XE"
|
||||
className="lightbox-link w-inline-block w-lightbox"
|
||||
>
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a612636043d8e5dcb04ad0_about-us-video-thumbnail-quantum-webflow-template.jpg" width={660} height={372} alt="About Us Thumbnail" className="lightbox-thumbnail" />
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 49 49" fill="none" className="play-button">
|
||||
<path d="M33.2598 24.4998L20.5863 31.8168L20.5863 17.1827L33.2598 24.4998Z" fill="currentColor" />
|
||||
</svg>
|
||||
</VideoLightbox>
|
||||
<Link href="/about" className="lightbox-link w-inline-block">
|
||||
<Image
|
||||
src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a612636043d8e5dcb04ad0_about-us-video-thumbnail-quantum-webflow-template.jpg"
|
||||
width={660}
|
||||
height={372}
|
||||
alt="DAL Code product overview"
|
||||
className="lightbox-thumbnail"
|
||||
/>
|
||||
</Link>
|
||||
<div className="position-relative---z-index-1">
|
||||
<div className="hidden-on-mobile-portrait">
|
||||
<div className="display-3 medium text-titles">
|
||||
Watch video</div>
|
||||
<div className="display-3 medium text-titles">Intent to build</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="about-section-bg">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 507 659" fill="none">
|
||||
<path d="M0 535L135.811 535" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M135.811 0L135.811 535" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M506.811 535L355.811 535" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M0 658L135.811 658" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M506.811 658L355.811 658" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M136 535L356 535" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M136 658L356 658" stroke="currentColor">
|
||||
</path>
|
||||
<path d="M0 535L135.811 535" stroke="currentColor" />
|
||||
<path d="M135.811 0L135.811 535" stroke="currentColor" />
|
||||
<path d="M506.811 535L355.811 535" stroke="currentColor" />
|
||||
<path d="M0 658L135.811 658" stroke="currentColor" />
|
||||
<path d="M506.811 658L355.811 658" stroke="currentColor" />
|
||||
<path d="M136 535L356 535" stroke="currentColor" />
|
||||
<path d="M136 658L356 658" stroke="currentColor" />
|
||||
</svg>
|
||||
<div className="about-section-gradient top">
|
||||
</div>
|
||||
<div className="about-section-gradient left">
|
||||
</div>
|
||||
<div className="about-section-gradient right">
|
||||
</div>
|
||||
<div className="about-section-gradient top" />
|
||||
<div className="about-section-gradient left" />
|
||||
<div className="about-section-gradient right" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,353 +1,37 @@
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import { INTEGRATION_ITEMS } from "@/lib/site-content"
|
||||
|
||||
const MARQUEE_ROWS = Array.from({ length: 3 }, () => INTEGRATION_ITEMS)
|
||||
|
||||
export default function IntegrationsSection() {
|
||||
return (
|
||||
<section className="section-small bg-neutral overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="ee652702-222a-0ca5-2508-17b1a107582a" style={{"opacity": "0", "filter": "blur(8px)"}} className="title-left-content-right">
|
||||
<div data-w-id="ee652702-222a-0ca5-2508-17b1a107582a" style={{ opacity: "0", filter: "blur(8px)" }} className="title-left-content-right">
|
||||
<div className="inner-container _400px _100-tablet">
|
||||
<div className="subtitle">Integrations</div>
|
||||
<div className="subtitle">Work Surfaces</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
AI engineered to integrate across every platform </h2>
|
||||
<h2>一个产品里,接住从需求澄清到工程交付的整条链路</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div className="inner-container _400px _100-tablet">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur scelerisque quam dui dictumst suspendisse iaculis ac gravida venenatis mattis sed. </p>
|
||||
DAL Code 把 Desktop IDE、Web Workspace、Mobile Review、Mission Planner、RAG、Tools、Diff 审批和企业治理放到同一条体验链上。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="f6559b35-9557-2504-f076-3a36fa5775a3" style={{"opacity": "0", "filter": "blur(8px)"}} className="integrations-marquee-wrapper marquee-hover-stop" {...{"tr-marquee-speed":"50","tr-marquee-element":"component","tr-marquee-scrolldirection":"true","tr-marquee-scrollscrub":"false"}}>
|
||||
<div className="integrations-marquee marquee-scroll-item">
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd871d459c0979566_integration-icon-01-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf5972224012a489b_integration-icon-02-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c26ffe1a8726e9533_integration-icon-03-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf394ef82f934055b_integration-icon-04-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c880d199c46c914ff_integration-icon-05-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70c337055b4648809b_integration-icon-06-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70e3d7d6153e132c82_integration-icon-07-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70d20bb145ee19163a_integration-icon-08-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e0bb9fa69c599d6b3_integration-icon-10-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70a151641726e87b52_integration-icon-11-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e925ff15bf5fa0586_integration-icon-12-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6de0050ea1d7414790_integration-icon-13-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd711092b9d58a062_integration-icon-14-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6d09ed29d4a9cfd6ed_integration-icon-15-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68ee6c592c38ae8672ba037d_integration-icon-16-quantum-webflow-template 1.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div className="integrations-marquee marquee-scroll-item">
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd871d459c0979566_integration-icon-01-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf5972224012a489b_integration-icon-02-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c26ffe1a8726e9533_integration-icon-03-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf394ef82f934055b_integration-icon-04-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c880d199c46c914ff_integration-icon-05-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70c337055b4648809b_integration-icon-06-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70e3d7d6153e132c82_integration-icon-07-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70d20bb145ee19163a_integration-icon-08-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e0bb9fa69c599d6b3_integration-icon-10-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70a151641726e87b52_integration-icon-11-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e925ff15bf5fa0586_integration-icon-12-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6de0050ea1d7414790_integration-icon-13-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd711092b9d58a062_integration-icon-14-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6d09ed29d4a9cfd6ed_integration-icon-15-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68ee6c592c38ae8672ba037d_integration-icon-16-quantum-webflow-template 1.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div className="integrations-marquee marquee-scroll-item">
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd871d459c0979566_integration-icon-01-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf5972224012a489b_integration-icon-02-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c26ffe1a8726e9533_integration-icon-03-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf394ef82f934055b_integration-icon-04-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c880d199c46c914ff_integration-icon-05-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70c337055b4648809b_integration-icon-06-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70e3d7d6153e132c82_integration-icon-07-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70d20bb145ee19163a_integration-icon-08-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e0bb9fa69c599d6b3_integration-icon-10-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70a151641726e87b52_integration-icon-11-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e925ff15bf5fa0586_integration-icon-12-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6de0050ea1d7414790_integration-icon-13-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd711092b9d58a062_integration-icon-14-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6d09ed29d4a9cfd6ed_integration-icon-15-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68ee6c592c38ae8672ba037d_integration-icon-16-quantum-webflow-template 1.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div className="integrations-marquee marquee-scroll-item">
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd871d459c0979566_integration-icon-01-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf5972224012a489b_integration-icon-02-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c26ffe1a8726e9533_integration-icon-03-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf394ef82f934055b_integration-icon-04-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c880d199c46c914ff_integration-icon-05-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70c337055b4648809b_integration-icon-06-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70e3d7d6153e132c82_integration-icon-07-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70d20bb145ee19163a_integration-icon-08-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e0bb9fa69c599d6b3_integration-icon-10-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70a151641726e87b52_integration-icon-11-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e925ff15bf5fa0586_integration-icon-12-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6de0050ea1d7414790_integration-icon-13-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd711092b9d58a062_integration-icon-14-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6d09ed29d4a9cfd6ed_integration-icon-15-quantum-webflow-template.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" className="integration-marquee-item w-inline-block">
|
||||
<Image src="/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68ee6c592c38ae8672ba037d_integration-icon-16-quantum-webflow-template 1.svg" width={94} height={94} alt="Integration Icon - Quantum | Webflow Template" style={{"filter": "invert(0%)"}} className="integration-marquee-item-image" />
|
||||
<div style={{"width": "0%", "height": "100%"}} className="integration-marquee-item-bg">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-regular">
|
||||
<div data-w-id="c8f34226-476e-bf6e-d16d-132f8960d38b" style={{"opacity": "0", "filter": "blur(8px)"}} className="buttons-row">
|
||||
<Link id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" href="/contact" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
See all Apps</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
</path>
|
||||
</svg>
|
||||
<div className="button-icon-bg">
|
||||
</div>
|
||||
<div className="button-icon-bg-inside">
|
||||
</div>
|
||||
</div>
|
||||
<div data-w-id="f6559b35-9557-2504-f076-3a36fa5775a3" style={{ opacity: "0", filter: "blur(8px)" }} className="integrations-marquee-wrapper marquee-hover-stop" {...{ "tr-marquee-speed": "50", "tr-marquee-element": "component", "tr-marquee-scrolldirection": "true", "tr-marquee-scrollscrub": "false" }}>
|
||||
{MARQUEE_ROWS.map((items, rowIndex) => (
|
||||
<div key={rowIndex} className="integrations-marquee marquee-scroll-item">
|
||||
{items.map((item) => (
|
||||
<a key={`${rowIndex}-${item.label}`} href="/about" className="integration-marquee-item w-inline-block">
|
||||
<Image src={item.icon} width={94} height={94} alt={item.label} style={{ filter: "invert(0%)" }} className="integration-marquee-item-image" />
|
||||
<div style={{ width: "0%", height: "100%" }} className="integration-marquee-item-bg" />
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,55 +1,35 @@
|
||||
import LottiePlayer from "@/components/LottiePlayer"
|
||||
import Link from "next/link"
|
||||
import { HOME_PRINCIPLES } from "@/lib/site-content"
|
||||
|
||||
export default function PrinciplesSection() {
|
||||
return (
|
||||
<section className="section overflow-hidden">
|
||||
<div className="w-layout-blockcontainer container-default w-container">
|
||||
<div data-w-id="372e7f28-67fd-5f5e-6061-256f8b7997a5" style={{"opacity": "0", "filter": "blur(8px)"}} className="text-center">
|
||||
<div className="subtitle">Core principles</div>
|
||||
<div className="subtitle">Core Principles</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<h2>
|
||||
Architecting tomorrow's mind </h2>
|
||||
<h2>DAL Code 最值得被记住的三件事</h2>
|
||||
</div>
|
||||
<div className="mg-top-4x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quis suspendisse nulla amet viverra tortor pharetra. </p>
|
||||
<p>如果这三件事讲不清楚,DAL Code 就会被误解成另一个模板化 AI IDE。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mg-top-large">
|
||||
<div data-w-id="3f196c4e-8732-f3ef-e6a2-04398a5349e2" style={{"opacity": "0", "filter": "blur(8px)"}} className="corner-gradient-container">
|
||||
<div className="border-wrapper">
|
||||
<div className="w-layout-grid principles-grid">
|
||||
<div className="card principles-card">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1d66f46dd336c7d633316_velocity-quantum-webflow-template-top-to-bottom.json" className="max-width-280px-mbl" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">Velocity</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quuis suspendisse nulla amet viverra tortor. </p>
|
||||
{HOME_PRINCIPLES.map((item) => (
|
||||
<div key={item.title} className="card principles-card">
|
||||
<LottiePlayer src={item.animation} className="max-width-280px-mbl" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">{item.title}</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>{item.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="card principles-card">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1d6cf4cfbc189da50f80b_generality-quantum-webflow-template-top-to-bottom.json" className="max-width-280px-mbl" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">Generality</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quuis suspendisse nulla amet viverra tortor. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="card principles-card">
|
||||
<LottiePlayer src="/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1d6a76e480413794c2aa3_intelect-quantum-webflow-template-top-to-bottom.json" className="max-width-280px-mbl" loop autoplay />
|
||||
<div>
|
||||
<h3 className="display-4">Intellect</h3>
|
||||
<div className="mg-top-5x-extra-small">
|
||||
<p>
|
||||
ipsum dolor sit amet consectetur nec quuis suspendisse nulla amet viverra tortor. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div data-wf--corner-gradient-outline--variant="base" className="corner-gradient-wrapper">
|
||||
@@ -76,8 +56,7 @@ export default function PrinciplesSection() {
|
||||
<div data-w-id="bffe9e02-73d6-d2d3-239d-bbcb4bd7d83d" style={{"opacity": "0", "filter": "blur(8px)"}} className="buttons-row">
|
||||
<Link id="w-node-_99805214-dd54-e7f3-2549-05c0df1040fb-df1040fb" href="/about" className="primary-button w-inline-block">
|
||||
<div className="button-content">
|
||||
<div>
|
||||
About our company</div>
|
||||
<div>继续看产品定位</div>
|
||||
<div className="button-icon-wrapper primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 17 17" fill="none" className="squared-icon">
|
||||
<path d="M6.25391 3.45312L10.7458 8.01563L6.25391 12.5781" stroke="currentColor" strokeWidth="1.5" strokeLinecap="square">
|
||||
|
||||
+179
-37
@@ -6,63 +6,205 @@ export interface BlogPost {
|
||||
category: string
|
||||
image: string
|
||||
imageAlt: string
|
||||
sections: Array<{
|
||||
title: string
|
||||
paragraphs: string[]
|
||||
}>
|
||||
}
|
||||
|
||||
export const BLOG_CATEGORIES = ["All", "Trends", "Applications", "Ethics"] as const
|
||||
export const BLOG_CATEGORIES = ["全部", "产品定位", "Agent", "平台能力"] as const
|
||||
|
||||
export const BLOG_POSTS: BlogPost[] = [
|
||||
{
|
||||
slug: "ai-powered-predictive-models-and-their-impact-across-industries",
|
||||
title: "AI-powered predictive models and their impact across industries",
|
||||
excerpt: "Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque.",
|
||||
date: "Jun, 2025",
|
||||
category: "Trends",
|
||||
slug: "why-dal-code-is-an-intent-to-code-platform",
|
||||
title: "为什么 DAL Code 不是另一个 AI IDE,而是 Intent-to-Code Platform",
|
||||
excerpt: "从“用户先写 prompt”转向“AI 先把需求问清楚”,这是 DAL Code 和传统 AI IDE 的分水岭。",
|
||||
date: "2026-04",
|
||||
category: "产品定位",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7e2a643b738b2cb06fc_ai-powered-predictive-models-and-their-impact-thumbnail-quantum-webflow-template.png",
|
||||
imageAlt: "AI-powered predictive models and their impact across industries",
|
||||
imageAlt: "DAL Code intent to code platform",
|
||||
sections: [
|
||||
{
|
||||
title: "意图鸿沟才是真问题",
|
||||
paragraphs: [
|
||||
"大多数 AI 编程工具默认用户已经知道该怎么表达技术需求,于是产品体验围绕 prompt、diff 和代码修改展开。",
|
||||
"DAL Code 从一开始就把问题重新定义为意图捕获:当用户只知道业务目标时,AI 应该主动发问、缩小模糊空间,再进入工程执行。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "从编辑器思维转向任务思维",
|
||||
paragraphs: [
|
||||
"传统 IDE 的核心工作单元是文件和函数,DAL Code 的核心工作单元是带上下文、约束和验收标准的任务。",
|
||||
"这也是为什么 DAL Code 不止输出代码,还要输出测试、文档、执行步骤和审批节点。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "官网为什么先强调这个",
|
||||
paragraphs: [
|
||||
"如果官网只讲 Agent、多模型和插件,用户会自然把它理解成另一个 Cursor。",
|
||||
"把产品隐喻讲清楚,后面的 Mission Mode、Skills 和多模型路由才有一致的解释框架。",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "how-ai-is-shaping-the-future-of-healthcare-and-medicine",
|
||||
title: "How AI is shaping the future of healthcare and medicine",
|
||||
excerpt: "Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque.",
|
||||
date: "Jun, 2025",
|
||||
category: "Applications",
|
||||
slug: "inside-the-dal-code-mission-mode",
|
||||
title: "Mission Mode 背后到底在做什么",
|
||||
excerpt: "Mission Mode 不是一次长对话,而是一次可分解、可追踪、可审批的工程执行流程。",
|
||||
date: "2026-04",
|
||||
category: "Agent",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7c24025d4081cbfa426_how-ai-is-shaping-the-future-thumbnail-quantum-webflow-template.png",
|
||||
imageAlt: "How AI is shaping the future of healthcare and medicine",
|
||||
imageAlt: "Mission mode workflow",
|
||||
sections: [
|
||||
{
|
||||
title: "任务不是一句话结束的",
|
||||
paragraphs: [
|
||||
"用户输入一个目标后,DAL Code 先匹配适合的 Skill,再通过 intake questions 把目标变成结构化需求。",
|
||||
"只有需求足够清晰,任务拆解、工具编排和最终审批才不会失真。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "自主执行不等于黑盒",
|
||||
paragraphs: [
|
||||
"Mission Mode 会把计划、上下文压缩、工具调用和权限请求拆到可追踪的步骤上。",
|
||||
"这和纯云端黑盒 Agent 的差别很大:用户既能中途干预,也能在结果阶段看到真实的工程边界。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "为什么它适合团队",
|
||||
paragraphs: [
|
||||
"团队要的不是单次惊艳,而是可解释的长期协作能力。",
|
||||
"Mission Mode 的价值在于把“AI 做了什么、为什么这样做、需要谁审批”都保留下来。",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "the-role-of-transparency-in-ai-development-and-innovation",
|
||||
title: "The role of transparency in AI development and innovation",
|
||||
excerpt: "Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque.",
|
||||
date: "Jun, 2025",
|
||||
category: "Ethics",
|
||||
slug: "smart-routing-is-a-product-advantage-not-a-model-switcher",
|
||||
title: "多模型智能路由不是模型切换器,而是产品能力",
|
||||
excerpt: "同一条工作流里,补全、代码审查、网页抓取和长任务规划不该强行使用同一个模型。",
|
||||
date: "2026-04",
|
||||
category: "平台能力",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7967b59be67bb3b9a64_the-role-of-transparency-in-ai-thumbnail-quantum-webflow-template.png",
|
||||
imageAlt: "The role of transparency in AI development and innovation",
|
||||
imageAlt: "Smart model routing in DAL Code",
|
||||
sections: [
|
||||
{
|
||||
title: "路由不是装饰层",
|
||||
paragraphs: [
|
||||
"如果模型选择还要靠用户手动下拉,产品就没有真正把复杂性接过去。",
|
||||
"DAL Code 把任务类型、上下文长度、成本预算和延迟阈值都变成路由输入,而不是让用户自己猜。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "团队收益来自一致性",
|
||||
paragraphs: [
|
||||
"真正有价值的不是“能选 20+ 模型”,而是“同一套策略能在团队内稳定复用”。",
|
||||
"这样才能把模型成本、成功率和审批路径统一管理起来。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "这也是中国市场机会",
|
||||
paragraphs: [
|
||||
"很多国际产品要么模型单一,要么对中文开发者工作流支持不足。",
|
||||
"DAL Code 的差异化之一,就是把本地化、路由和工程交付作为同一个产品问题来解。",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "revolutionizing-business-insights-with-ai-data-analytics",
|
||||
title: "Revolutionizing business insights with AI data analytics",
|
||||
excerpt: "Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque.",
|
||||
date: "Jun, 2025",
|
||||
category: "Applications",
|
||||
slug: "how-skills-turn-experience-into-reusable-workflows",
|
||||
title: "Skills 为什么不是 prompt 模板,而是经验封装",
|
||||
excerpt: "DAL Code 想沉淀的不是单次对话,而是可复用、可组合、可交易的工作流资产。",
|
||||
date: "2026-04",
|
||||
category: "平台能力",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e766a2a14a56c3716545_revolutionizing-business-insights-with-ai-thumbnail-quantum-webflow-template.png",
|
||||
imageAlt: "Revolutionizing business insights with AI data analytics",
|
||||
imageAlt: "Skills ecosystem for DAL Code",
|
||||
sections: [
|
||||
{
|
||||
title: "prompt 模板解决不了交付一致性",
|
||||
paragraphs: [
|
||||
"模板只能复用一段话,却无法复用提问顺序、默认值、验证规则和工具执行顺序。",
|
||||
"Skills 的意义在于把这些隐性经验显式化,变成可安装的产品单元。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "技能系统为什么能形成护城河",
|
||||
paragraphs: [
|
||||
"每次 Skill 被使用,DAL Code 都在积累哪类问题最有效、哪类执行顺序最稳定。",
|
||||
"这是一种真正会越用越强的数据飞轮,而不是单纯堆更多提示词。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "对官网的含义",
|
||||
paragraphs: [
|
||||
"官网不能只把 Skills 写成一个点状功能。",
|
||||
"它应该被用户理解为 DAL Code 从工具走向平台的关键桥梁。",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "how-ai-is-optimizing-business-operations-for-maximum-efficiency",
|
||||
title: "How AI is optimizing business operations for maximum efficiency",
|
||||
excerpt: "Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque.",
|
||||
date: "Jun, 2025",
|
||||
category: "Trends",
|
||||
slug: "what-open-core-means-for-ai-coding-products",
|
||||
title: "AI 编程产品为什么需要 Open Core 的信任结构",
|
||||
excerpt: "在涉及代码、终端、权限和企业知识库的场景里,透明度不是加分项,而是进入门槛。",
|
||||
date: "2026-04",
|
||||
category: "产品定位",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e73c22149c3c4d1276f2_how-ai-is-optimizing-business-thumbnail-quantum-webflow-template.png",
|
||||
imageAlt: "How AI is optimizing business operations for maximum efficiency",
|
||||
imageAlt: "Open core trust model",
|
||||
sections: [
|
||||
{
|
||||
title: "为什么不是全闭源",
|
||||
paragraphs: [
|
||||
"当 AI 需要读代码、改文件、跑命令时,用户天然会关心它到底看到了什么、能做什么。",
|
||||
"客户端开源把最敏感的交互层暴露给用户审视,这是建立信任的最短路径。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "为什么也不是全部开源",
|
||||
paragraphs: [
|
||||
"DAL Code 的差异化很大一部分来自 Agent 引擎、上下文压缩、路由和知识层的长期工程积累。",
|
||||
"Open Core 允许公开信任边界,同时保留真正难复制的智能层能力。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "这会影响商业化吗",
|
||||
paragraphs: [
|
||||
"不会,反而更清晰。个人开发者先因为透明和易用进入产品,企业客户再因为私有化和治理能力付费。",
|
||||
"这也是产品文案里必须同时出现开源信任和企业方案的原因。",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "ethical-ai-and-the-balance-between-innovation-and-responsibilities",
|
||||
title: "Ethical AI and the balance between innovation and responsibility",
|
||||
excerpt: "Lorem ipsum dolor sit amet consectetur sit mi lacus quis vitae sed pellentesque libero ultricies neque.",
|
||||
date: "Jun, 2025",
|
||||
category: "Ethics",
|
||||
slug: "building-a-chinese-first-ai-engineering-workspace",
|
||||
title: "做一个中文开发者优先的 AI Engineering Workspace",
|
||||
excerpt: "中文优先不是把界面翻译成中文,而是把提问方式、文档语境和社区支持一起本地化。",
|
||||
date: "2026-04",
|
||||
category: "平台能力",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e640d87281a090067c41_ethical-ai-and-the-balance-between-thumbnail-quantum-webflow-template.png",
|
||||
imageAlt: "Ethical AI and the balance between innovation and responsibility",
|
||||
imageAlt: "Chinese-first developer experience",
|
||||
sections: [
|
||||
{
|
||||
title: "为什么这不是 UI 层问题",
|
||||
paragraphs: [
|
||||
"很多国际产品只有英文信息架构,中文用户即使看懂了界面,也很难把真实需求表达精确。",
|
||||
"DAL Code 的本地化重点在于问答路径、默认示例、文档引用和协作语气都服务于中文工作流。",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "本地化和专业度不冲突",
|
||||
paragraphs: [
|
||||
"中文优先不意味着弱化技术深度,而是把专业能力交付给更多原本不擅长写 prompt 的用户。",
|
||||
"这也是 DAL Code 想覆盖独立开发者、团队 Lead 和非技术创业者的基础。 ",
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "对官网的直接要求",
|
||||
paragraphs: [
|
||||
"官网首版就应该说中文,但保留关键技术术语,让用户一眼知道产品是为谁设计的。",
|
||||
"产品站的语气和结构,本身就是定位的一部分。",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
+70
-23
@@ -5,39 +5,86 @@ export interface Career {
|
||||
location: string
|
||||
type: string
|
||||
description: string
|
||||
responsibilities: string[]
|
||||
requirements: string[]
|
||||
outcome: string
|
||||
}
|
||||
|
||||
export const CAREERS: Career[] = [
|
||||
{
|
||||
slug: "ai-research-scientist",
|
||||
title: "AI Research Scientist",
|
||||
department: "Research",
|
||||
location: "New York, NY",
|
||||
type: "Full time",
|
||||
description: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat.",
|
||||
slug: "agent-runtime-engineer",
|
||||
title: "Agent Runtime Engineer",
|
||||
department: "Agent Engine",
|
||||
location: "Remote / Shanghai",
|
||||
type: "优先建设方向",
|
||||
description: "负责 DAL Code 的任务执行、工具编排、权限流和长任务稳定性,让 Agent 从“能跑”走向“可托付”。",
|
||||
responsibilities: [
|
||||
"推进 query loop、tool orchestration、权限审批与恢复机制的稳定性",
|
||||
"把复杂任务拆成可观测、可回滚、可验证的执行单元",
|
||||
"和产品设计一起定义 Mission Mode 的用户可见行为",
|
||||
],
|
||||
requirements: [
|
||||
"熟悉 TypeScript 后端、异步流程控制和任务状态机",
|
||||
"对 Agent 失败模式、上下文管理和安全边界有工程判断",
|
||||
"能把抽象能力落成稳定的产品行为,而不是 demo",
|
||||
],
|
||||
outcome: "让 DAL Code 的 Agent 能在真实项目里长期可靠地工作。",
|
||||
},
|
||||
{
|
||||
slug: "machine-learning-engineer",
|
||||
title: "Machine Learning Engineer",
|
||||
department: "Research",
|
||||
location: "Los Angeles, CA",
|
||||
type: "Part time",
|
||||
description: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat.",
|
||||
slug: "desktop-ide-engineer",
|
||||
title: "Desktop IDE Engineer",
|
||||
department: "Developer Experience",
|
||||
location: "Remote / Shanghai",
|
||||
type: "优先建设方向",
|
||||
description: "负责 Electron + VS Code Fork 的体验收口,把 Agent 能力带进真正可日常使用的 IDE 工作流。",
|
||||
responsibilities: [
|
||||
"完善 Composer、Diff 审批、Terminal、搜索和设置体系",
|
||||
"把私有 Agent 能力和开源客户端边界处理清楚",
|
||||
"持续提升性能、稳定性和与上游 VS Code 的对齐策略",
|
||||
],
|
||||
requirements: [
|
||||
"熟悉 Electron、React、VS Code 扩展或 IDE 产品工程",
|
||||
"愿意处理复杂状态、性能和边界兼容问题",
|
||||
"对开发者工具的细节质量有较高要求",
|
||||
],
|
||||
outcome: "让 DAL Code 不只会自动写代码,也值得被开发者长期打开。",
|
||||
},
|
||||
{
|
||||
slug: "ai-infrastructure-engineer",
|
||||
title: "AI Infrastructure Engineer",
|
||||
department: "Engineering",
|
||||
slug: "multi-model-routing-engineer",
|
||||
title: "Multi-Model Routing Engineer",
|
||||
department: "Platform Intelligence",
|
||||
location: "Remote",
|
||||
type: "Part time",
|
||||
description: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat.",
|
||||
type: "优先建设方向",
|
||||
description: "负责多模型能力矩阵、路由策略与降级机制,把 DeepAILab 的模型平台能力真正产品化。",
|
||||
responsibilities: [
|
||||
"设计任务分类与模型能力评分体系",
|
||||
"构建路由策略、超时降级和成本控制逻辑",
|
||||
"用真实任务反馈持续优化成功率与稳定性",
|
||||
],
|
||||
requirements: [
|
||||
"熟悉 LLM 产品、评测体系或推理服务工程",
|
||||
"理解延迟、成本、质量三者之间的权衡",
|
||||
"能用数据而不是感觉做路由决策",
|
||||
],
|
||||
outcome: "让 DAL Code 在不同任务里始终选到更合适的模型。",
|
||||
},
|
||||
{
|
||||
slug: "mlops-engineer",
|
||||
title: "MLOps Engineer",
|
||||
department: "Engineering",
|
||||
location: "Remote",
|
||||
type: "Full time",
|
||||
description: "Lorem ipsum dolor sit amet consectetur ornare dui amet ultrices sed fermentum euismod dictum ut pellentesque aliquet nunc massa sed nisl pretium enim placerat.",
|
||||
slug: "ai-product-designer",
|
||||
title: "AI Product Designer",
|
||||
department: "Intent UX",
|
||||
location: "Remote / Shanghai",
|
||||
type: "优先建设方向",
|
||||
description: "负责 DAL Code 的意图捕获体验,把复杂 AI 能力转成清晰、可信、中文开发者友好的交互流程。",
|
||||
responsibilities: [
|
||||
"设计 intake questions、Mission Mode 和审批流的界面结构",
|
||||
"把产品定位、品牌语气和协作流程统一成一套体验语言",
|
||||
"和工程一起把视觉、动效与真实能力对应起来",
|
||||
],
|
||||
requirements: [
|
||||
"有复杂工具产品、开发者产品或 AI 产品设计经验",
|
||||
"能同时理解用户研究、信息架构和工程实现约束",
|
||||
"对中文产品表达和交互质感敏感",
|
||||
],
|
||||
outcome: "让 DAL Code 在复杂能力之上依然保持低门槛与高信任。",
|
||||
},
|
||||
]
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
export interface NavLink {
|
||||
href: string
|
||||
label: string
|
||||
}
|
||||
|
||||
export interface LinkGroup {
|
||||
title: string
|
||||
links: NavLink[]
|
||||
}
|
||||
|
||||
export interface StatItem {
|
||||
value: string
|
||||
label: string
|
||||
}
|
||||
|
||||
export interface IntegrationItem {
|
||||
label: string
|
||||
icon: string
|
||||
}
|
||||
|
||||
export interface PrincipleItem {
|
||||
title: string
|
||||
description: string
|
||||
animation: string
|
||||
}
|
||||
|
||||
export interface ValueItem {
|
||||
title: string
|
||||
icon: string
|
||||
}
|
||||
|
||||
export interface PersonaItem {
|
||||
title: string
|
||||
description: string
|
||||
}
|
||||
|
||||
export interface ContactChannel {
|
||||
title: string
|
||||
value: string
|
||||
description: string
|
||||
href: string
|
||||
}
|
||||
|
||||
export interface FaqItem {
|
||||
question: string
|
||||
answer: string
|
||||
}
|
||||
|
||||
export const SITE_NAME = "DAL Code"
|
||||
export const SITE_BRAND = "DAL Code by DeepAILab"
|
||||
export const SITE_TAGLINE = "AI-Guided Intent-to-Code Platform"
|
||||
export const SITE_DESCRIPTION =
|
||||
"让模糊需求先被 AI 问清楚,再把它变成代码、测试、文档和可审核的工程结果。"
|
||||
|
||||
export const NAV_LINKS: NavLink[] = [
|
||||
{ href: "/", label: "首页" },
|
||||
{ href: "/about", label: "产品定位" },
|
||||
{ href: "/blog", label: "洞察" },
|
||||
{ href: "/contact", label: "联系" },
|
||||
]
|
||||
|
||||
export const NAV_GROUPS: LinkGroup[] = [
|
||||
{
|
||||
title: "产品",
|
||||
links: [
|
||||
{ href: "/", label: "首页" },
|
||||
{ href: "/about", label: "为什么是 DAL Code" },
|
||||
{ href: "/contact", label: "申请试用" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "内容",
|
||||
links: [
|
||||
{ href: "/blog", label: "产品洞察" },
|
||||
{ href: "/careers", label: "建设中的角色" },
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
export const FOOTER_GROUPS: LinkGroup[] = [
|
||||
{
|
||||
title: "产品",
|
||||
links: [
|
||||
{ href: "/", label: "首页" },
|
||||
{ href: "/about", label: "定位与能力" },
|
||||
{ href: "/contact", label: "联系团队" },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "资源",
|
||||
links: [
|
||||
{ href: "/blog", label: "产品文章" },
|
||||
{ href: "/careers", label: "角色方向" },
|
||||
{ href: "/coming-soon", label: "路线图" },
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
export const COMPANY_STATS: StatItem[] = [
|
||||
{ value: "20+", label: "可智能路由的模型" },
|
||||
{ value: "3", label: "协作模式" },
|
||||
{ value: "5", label: "上下文压缩层级" },
|
||||
{ value: "Open", label: "客户端开源策略" },
|
||||
]
|
||||
|
||||
export const INTEGRATION_ITEMS: IntegrationItem[] = [
|
||||
{
|
||||
label: "Desktop IDE",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6dd871d459c0979566_integration-icon-01-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Web Workspace",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf5972224012a489b_integration-icon-02-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Mobile Review",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c26ffe1a8726e9533_integration-icon-03-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Mission Planner",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6cf394ef82f934055b_integration-icon-04-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Skills Engine",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6c880d199c46c914ff_integration-icon-05-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Context Engine",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70c337055b4648809b_integration-icon-06-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "RAG",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70e3d7d6153e132c82_integration-icon-07-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Terminal + Git",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70d20bb145ee19163a_integration-icon-08-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Diff Review",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e0bb9fa69c599d6b3_integration-icon-10-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Permission Flow",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b70a151641726e87b52_integration-icon-11-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Tool Runtime",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6e925ff15bf5fa0586_integration-icon-12-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
label: "Private Deploy",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68cd8b6de0050ea1d7414790_integration-icon-13-quantum-webflow-template.svg",
|
||||
},
|
||||
]
|
||||
|
||||
export const HOME_PRINCIPLES: PrincipleItem[] = [
|
||||
{
|
||||
title: "Intent Capture",
|
||||
description:
|
||||
"不是等用户写出完美 prompt,而是由 AI 用结构化问题把需求澄清成工程任务。",
|
||||
animation:
|
||||
"/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1d66f46dd336c7d633316_velocity-quantum-webflow-template-top-to-bottom.json",
|
||||
},
|
||||
{
|
||||
title: "Smart Routing",
|
||||
description:
|
||||
"同一个工作流里的不同子任务自动选择最优模型,在质量、速度和成本之间动态平衡。",
|
||||
animation:
|
||||
"/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1d6cf4cfbc189da50f80b_generality-quantum-webflow-template-top-to-bottom.json",
|
||||
},
|
||||
{
|
||||
title: "Open Core Trust",
|
||||
description:
|
||||
"客户端开源、数据路径透明、危险操作可审批,既给个人开发者效率,也给团队可审计性。",
|
||||
animation:
|
||||
"/assets/cdn-prod-website-files-com/68a342b7066c56fa60eb3af1/68d1d6a76e480413794c2aa3_intelect-quantum-webflow-template-top-to-bottom.json",
|
||||
},
|
||||
]
|
||||
|
||||
export const ABOUT_VALUES: ValueItem[] = [
|
||||
{
|
||||
title: "透明可审计",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598eeb838c974f3def70a_accuracy-icon-quantum-webflow-template-1.svg",
|
||||
},
|
||||
{
|
||||
title: "中文优先",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f0e3caa08df665212f_trust-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
title: "多模型务实主义",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f1f8443cbbcf767239_intellect-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
title: "端到端自动化",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f00141b9ac31a01989_velocity-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
title: "安全默认开启",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598eefda8dc1927236eb3_clarity-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
title: "企业可落地",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598f04600b3080cab823c_scalability-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
title: "工程质量优先",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598ed8d91f474a2d4ecdc_excellence-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
{
|
||||
title: "知识可复用",
|
||||
icon: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3af1/68a598ed19f8b3ed79933a38_communication-icon-quantum-webflow-template.svg",
|
||||
},
|
||||
]
|
||||
|
||||
export const TARGET_PERSONAS: PersonaItem[] = [
|
||||
{
|
||||
title: "独立开发者",
|
||||
description: "需要一个真正能接手样板代码、重构和测试的 AI 编程搭档。",
|
||||
},
|
||||
{
|
||||
title: "团队 Lead",
|
||||
description: "想统一模型策略、控制成本,并让 Agent 输出过程可审查。",
|
||||
},
|
||||
{
|
||||
title: "非技术创业者",
|
||||
description: "不想学习 prompt engineering,更想让 AI 先把需求问清楚。",
|
||||
},
|
||||
{
|
||||
title: "企业 CTO",
|
||||
description: "关心私有化部署、SSO、审计日志和与现有知识库的连接能力。",
|
||||
},
|
||||
]
|
||||
|
||||
export const CONTACT_CHANNELS: ContactChannel[] = [
|
||||
{
|
||||
title: "产品咨询",
|
||||
value: "申请产品演示与试用方向沟通",
|
||||
description: "适合想了解 DAL Code 产品定位、路线图和早期试用机会的团队。",
|
||||
href: "#contact-form",
|
||||
},
|
||||
{
|
||||
title: "企业方案",
|
||||
value: "私有化部署 / 团队采购 / 安全合规",
|
||||
description: "适合关注多模型路由、私有部署和审批流的技术负责人。",
|
||||
href: "#contact-form",
|
||||
},
|
||||
{
|
||||
title: "生态合作",
|
||||
value: "Skills / 插件 / 社区共建",
|
||||
description: "适合希望围绕 DAL Code 一起构建工作流、模板和生态能力的伙伴。",
|
||||
href: "https://deepailab.com",
|
||||
},
|
||||
]
|
||||
|
||||
export const CONTACT_FAQS: FaqItem[] = [
|
||||
{
|
||||
question: "DAL Code 和 Cursor / Codex 的核心区别是什么?",
|
||||
answer:
|
||||
"DAL Code 的重点不是让用户写更好的 prompt,而是让 AI 先把需求问清楚,再把任务拆解、执行和交付。",
|
||||
},
|
||||
{
|
||||
question: "多模型路由会影响团队的稳定性吗?",
|
||||
answer:
|
||||
"不会。模型选择由统一策略控制,任务类型、成本预算和延迟阈值都会被显式纳入路由决策。",
|
||||
},
|
||||
{
|
||||
question: "你们支持企业私有化和审计吗?",
|
||||
answer:
|
||||
"这是产品路线里的重点方向。官网当前版本展示的是目标能力,实际合作可以先从约束清晰的场景开始落地。",
|
||||
},
|
||||
{
|
||||
question: "DAL Code 的 Skills 是什么?",
|
||||
answer:
|
||||
"Skills 不是 prompt 模板,而是把经验封装成可复用的引导式工作流,让 AI 能主动采访、验证和执行。",
|
||||
},
|
||||
]
|
||||
|
||||
export const SOCIAL_LINKS = [
|
||||
{ label: "DeepAILab", href: "https://deepailab.com" },
|
||||
{ label: "GitHub", href: "https://github.com" },
|
||||
{ label: "Blog", href: "/blog" },
|
||||
{ label: "Contact", href: "/contact" },
|
||||
]
|
||||
+37
-20
@@ -4,35 +4,52 @@ export interface TeamMember {
|
||||
role: string
|
||||
bio: string
|
||||
image: string
|
||||
story: string[]
|
||||
}
|
||||
|
||||
export const TEAM_MEMBERS: TeamMember[] = [
|
||||
{
|
||||
slug: "john-carter-wy738",
|
||||
name: "John Carter",
|
||||
role: "CEO & Founder",
|
||||
bio: "Lorem ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget.",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5ff7b59be67bb3ac207_john-carter-avatar-quantum-webflow-template.jpg",
|
||||
slug: "intent-capture",
|
||||
name: "Intent Capture",
|
||||
role: "把模糊目标变成可执行需求",
|
||||
bio: "DAL Code 的第一能力不是写代码,而是先用结构化问题把需求问清楚。",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7e2a643b738b2cb06fc_ai-powered-predictive-models-and-their-impact-thumbnail-quantum-webflow-template.png",
|
||||
story: [
|
||||
"Intent Capture 负责接住用户最初那句不完整的话,把产品目标、约束和成功标准变成工程语言。",
|
||||
"它决定了 DAL Code 是否真的能服务非技术用户,也决定了后续 Agent 执行会不会偏离意图。",
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "sophie-moore",
|
||||
name: "Sophie Moore",
|
||||
role: "Director of Operations",
|
||||
bio: "Lorem ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget.",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5d29b2f76acd088f052_sophie-moore-avatar-quantum-webflow-template.jpg",
|
||||
slug: "agent-runtime",
|
||||
name: "Agent Runtime",
|
||||
role: "让计划、工具和审批跑得稳定",
|
||||
bio: "从 query loop 到 tool orchestration,这一层决定了 DAL Code 的自主执行是否值得信任。",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7c24025d4081cbfa426_how-ai-is-shaping-the-future-thumbnail-quantum-webflow-template.png",
|
||||
story: [
|
||||
"Agent Runtime 处理任务拆解、上下文压缩、工具执行和权限流,让 Mission Mode 不只是一个长对话。",
|
||||
"它的重点不是更激进,而是更可控:每一步都要能解释、验证和回滚。",
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "lilly-woods",
|
||||
name: "Lilly Woods",
|
||||
role: "Lead UX Designer",
|
||||
bio: "Lorem ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget.",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5b658f5ca9f60fd5e16_lilly-woods-avatar-quantum-webflow-template.jpg",
|
||||
slug: "smart-routing",
|
||||
name: "Smart Routing",
|
||||
role: "在质量、速度和成本之间动态选模",
|
||||
bio: "DAL Code 的多模型优势只有在产品层真正落地,才会变成用户感知得到的体验差异。",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e7967b59be67bb3b9a64_the-role-of-transparency-in-ai-thumbnail-quantum-webflow-template.png",
|
||||
story: [
|
||||
"Smart Routing 不是把模型列表摆给用户看,而是让产品在不同任务阶段自动选更合适的模型。",
|
||||
"对团队来说,这意味着成本、延迟和质量可以被统一治理,而不是靠个人经验调参。",
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "matt-cannon",
|
||||
name: "Matt Cannon",
|
||||
role: "VP of Engineering",
|
||||
bio: "Lorem ipsum dolor sit amet consectetur diam leo interdum nibh ut at libero elit pharetra in eget.",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e5268e58fa10010ce586_matt-cannon-avatar-quantum-webflow-template.jpg",
|
||||
slug: "open-core-dx",
|
||||
name: "Open Core DX",
|
||||
role: "兼顾开源信任与企业治理",
|
||||
bio: "客户端开源、智能层持续演进、企业边界清晰,这一块决定了 DAL Code 是否能走向长期平台。",
|
||||
image: "/assets/wubflow-shield-nocodexport-dev/68a342b7066c56fa60eb3b39/68a6e766a2a14a56c3716545_revolutionizing-business-insights-with-ai-thumbnail-quantum-webflow-template.png",
|
||||
story: [
|
||||
"Open Core DX 关注的不是单点功能,而是产品信任结构:哪些能力公开,哪些能力需要审计,哪些能力适合企业部署。",
|
||||
"它也是 DAL Code 从个人工具走向团队平台时最关键的一层产品设计。",
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
Generated
+695
-3
@@ -14,6 +14,7 @@
|
||||
"gsap": "^3.15.0",
|
||||
"lottie-react": "^2.4.1",
|
||||
"next": "16.2.4",
|
||||
"next-intl": "^4.10.1",
|
||||
"next-themes": "^0.4.6",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
@@ -461,6 +462,36 @@
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/fast-memoize": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/@formatjs/fast-memoize/-/fast-memoize-3.1.2.tgz",
|
||||
"integrity": "sha512-vPnriihkfK0lzoQGaXq+qXH23VsYyansRTkTgo2aTG0k1NjLFyZimFVdfj4C9JkSE5dm7CEngcQ5TTc1yAyBfQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@formatjs/icu-messageformat-parser": {
|
||||
"version": "3.5.5",
|
||||
"resolved": "https://registry.npmmirror.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.5.tgz",
|
||||
"integrity": "sha512-ASMon8BNlKHgQQpZx84xI80EXRS90GlsEU4wEulCKCzrMtUdrfEvFc9UEYmRbvEvtFQLZ4qHXnisUy6PuFjwyA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@formatjs/icu-skeleton-parser": "2.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/icu-skeleton-parser": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmmirror.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-2.1.5.tgz",
|
||||
"integrity": "sha512-9Kc6tMaAPZKTGevdfcvx5zT3v4BTfamo+djJE29wF6ds1QLhoA09MZNDpWMZaebWzuoOTIXhDvgmqmjSlUOGlw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@formatjs/intl-localematcher": {
|
||||
"version": "0.8.4",
|
||||
"resolved": "https://registry.npmmirror.com/@formatjs/intl-localematcher/-/intl-localematcher-0.8.4.tgz",
|
||||
"integrity": "sha512-J51dAnynnqJdVUEXidHoIWn+qYve+yNQEgmFk9Dyfr3p0okzm+5QhQ+9QmsMz08+BeWTVpc1HadIiLfZmRYbAQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@formatjs/fast-memoize": "3.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@hookform/resolvers": {
|
||||
"version": "5.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/@hookform/resolvers/-/resolvers-5.2.2.tgz",
|
||||
@@ -1260,6 +1291,313 @@
|
||||
"node": ">=12.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.6.tgz",
|
||||
"integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"detect-libc": "^2.0.3",
|
||||
"is-glob": "^4.0.3",
|
||||
"node-addon-api": "^7.0.0",
|
||||
"picomatch": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@parcel/watcher-android-arm64": "2.5.6",
|
||||
"@parcel/watcher-darwin-arm64": "2.5.6",
|
||||
"@parcel/watcher-darwin-x64": "2.5.6",
|
||||
"@parcel/watcher-freebsd-x64": "2.5.6",
|
||||
"@parcel/watcher-linux-arm-glibc": "2.5.6",
|
||||
"@parcel/watcher-linux-arm-musl": "2.5.6",
|
||||
"@parcel/watcher-linux-arm64-glibc": "2.5.6",
|
||||
"@parcel/watcher-linux-arm64-musl": "2.5.6",
|
||||
"@parcel/watcher-linux-x64-glibc": "2.5.6",
|
||||
"@parcel/watcher-linux-x64-musl": "2.5.6",
|
||||
"@parcel/watcher-win32-arm64": "2.5.6",
|
||||
"@parcel/watcher-win32-ia32": "2.5.6",
|
||||
"@parcel/watcher-win32-x64": "2.5.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-android-arm64": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz",
|
||||
"integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-darwin-arm64": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz",
|
||||
"integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-darwin-x64": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz",
|
||||
"integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-freebsd-x64": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz",
|
||||
"integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-linux-arm-glibc": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz",
|
||||
"integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-linux-arm-musl": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz",
|
||||
"integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-linux-arm64-glibc": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz",
|
||||
"integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-linux-arm64-musl": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz",
|
||||
"integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-linux-x64-glibc": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz",
|
||||
"integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-linux-x64-musl": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz",
|
||||
"integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-win32-arm64": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz",
|
||||
"integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-win32-ia32": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz",
|
||||
"integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-win32-x64": {
|
||||
"version": "2.5.6",
|
||||
"resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz",
|
||||
"integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher/node_modules/picomatch": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.4.tgz",
|
||||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/@rtsao/scc": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@rtsao/scc/-/scc-1.1.0.tgz",
|
||||
@@ -1267,12 +1605,216 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@schummar/icu-type-parser": {
|
||||
"version": "1.21.5",
|
||||
"resolved": "https://registry.npmmirror.com/@schummar/icu-type-parser/-/icu-type-parser-1.21.5.tgz",
|
||||
"integrity": "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@standard-schema/utils": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@standard-schema/utils/-/utils-0.3.0.tgz",
|
||||
"integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@swc/core-darwin-arm64": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.32.tgz",
|
||||
"integrity": "sha512-/YWMvJDPu+AAwuUsM2G+DNQ/7zhodURGzdQyewEqcvgklAdDHs3LwQmLLnyn6SJl8DT8UOxkbzK+D1PmPeelRg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-x64": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.32.tgz",
|
||||
"integrity": "sha512-KOTXJXdAhWL+hZ77MYP3z+4pcMFaQhQ74yqyN1uz093q0YnbxpqMtYpPISbYvMHzVRNNx5kN+9RZAXEaadhWVA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm-gnueabihf": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.32.tgz",
|
||||
"integrity": "sha512-oOoxLweljlc0A4X8ybsgxV7cVaYTwBOg2iMDJcFR3Sr48C+lsv9VzSmqdK/IVIXF4W4GjLc3VqTAdSMXlfVLuQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-gnu": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-oDzEkdl6D6BAWdMtU5KGO7y3HR5fJcvByNLyEk9+ugj8nP5Ovb7P4kBcStBXc4MPExFGQryehiINMlmY8HlclA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-musl": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.32.tgz",
|
||||
"integrity": "sha512-omcqjoZP/b8D8PuczVoRwJieC6ibj7qIxTftNYokz4/aSmKFHvsd7nIFfPk5ZvtzncbH4AY7+Dkr/Lp2gWxYeA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-ppc64-gnu": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-KGkTMyz/Tbn3PBNu0AVZ4GTDFKnICrYcTiNPZq8DrvK42pnFsf3GNDrIG9E5AtQlTmC0YigkWKmu0eMcfTrmgA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-s390x-gnu": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-G3Aa4tVS/3OGZBkoNIwUF9F6RAy+Osb4GOlo62SinLmDiErz/ykmM7KH0wkz6l9kM8jJq1HyAM6atJTUEbBk7g==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-gnu": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-ERsjfGcj6CBmj3vJnGDO8m8rTvw6RqMcWo1dogOtNx3/+/0+NNpJiXDobJrr1GwInI/BHAEkvSFIH6d2LqPcUQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-musl": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.32.tgz",
|
||||
"integrity": "sha512-N4Ggahe/8SUbTX50P6EdhbW9YWcgbZVb52R4cq6MK+zsoMjRq7rGvV5ztA05QnbaCYqMYx8rTY7KAIA3Crdo4Q==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-arm64-msvc": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.32.tgz",
|
||||
"integrity": "sha512-01yN0o9jvo8xBTP12aPK2wW8b41jmOlGbDDlAnoynotc4pO6xA0zby9f1z6j++qXDpGBttLySq1omgVrlQKYcw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-ia32-msvc": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.32.tgz",
|
||||
"integrity": "sha512-fLagI9XZYNpTcmlqAcp3KBtmj7E19WCmYD80Jxj1Kn5tGNa7yxNLd3NNdWxuZGUPl5iC0/KqZru7g08gF6Fsrw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-x64-msvc": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.32.tgz",
|
||||
"integrity": "sha512-gbc2bQ/T2CiR+w0OvcVKwLOFAcPZBvmWmolbwpg1E8UrpeC03DGtyMUApOHNXNYWA3SHFrYXCQtosrcMza1YFg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "Apache-2.0 AND MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/counter": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz",
|
||||
"integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@swc/helpers": {
|
||||
"version": "0.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.5.15.tgz",
|
||||
@@ -1282,6 +1824,15 @@
|
||||
"tslib": "^2.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/types": {
|
||||
"version": "0.1.26",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.26.tgz",
|
||||
"integrity": "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/counter": "^0.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@tailwindcss/node": {
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmmirror.com/@tailwindcss/node/-/node-4.2.4.tgz",
|
||||
@@ -2903,7 +3454,6 @@
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz",
|
||||
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -4173,6 +4723,21 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/icu-minify": {
|
||||
"version": "4.10.1",
|
||||
"resolved": "https://registry.npmmirror.com/icu-minify/-/icu-minify-4.10.1.tgz",
|
||||
"integrity": "sha512-zFiuMufdlms44K3sIufRmUnZSyl2tBeGyDKg2Q7d+5v6regrXTD9BIgzxXNOaXX++1xKIB/Lxlow/htJBx3hig==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://github.com/sponsors/amannn"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@formatjs/icu-messageformat-parser": "^3.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ignore": {
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
|
||||
@@ -4225,6 +4790,16 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/intl-messageformat": {
|
||||
"version": "11.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/intl-messageformat/-/intl-messageformat-11.2.2.tgz",
|
||||
"integrity": "sha512-yUfyIkPGqMvvk2onw2xBJeLsjXdiYUYebR8mmZVQYBuZUJsFGVht48Ftm1khgu8EZ0n+izX4rAEj3fLAilkh9g==",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"@formatjs/fast-memoize": "3.1.2",
|
||||
"@formatjs/icu-messageformat-parser": "3.5.5"
|
||||
}
|
||||
},
|
||||
"node_modules/is-array-buffer": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
|
||||
@@ -4387,7 +4962,6 @@
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
@@ -4433,7 +5007,6 @@
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
@@ -5265,6 +5838,15 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz",
|
||||
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/next": {
|
||||
"version": "16.2.4",
|
||||
"resolved": "https://registry.npmmirror.com/next/-/next-16.2.4.tgz",
|
||||
@@ -5318,6 +5900,83 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/next-intl": {
|
||||
"version": "4.10.1",
|
||||
"resolved": "https://registry.npmmirror.com/next-intl/-/next-intl-4.10.1.tgz",
|
||||
"integrity": "sha512-+j8+7W2x86Dt0pVPl9AZgHvsqZz34R/nYsUmNASR5l/cXDS/Y+XITfeRdyBxwLoirt881pfz9E7Z6dG0bwGsZA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://github.com/sponsors/amannn"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@formatjs/intl-localematcher": "^0.8.1",
|
||||
"@parcel/watcher": "^2.4.1",
|
||||
"@swc/core": "^1.15.2",
|
||||
"icu-minify": "^4.10.1",
|
||||
"negotiator": "^1.0.0",
|
||||
"next-intl-swc-plugin-extractor": "^4.10.1",
|
||||
"po-parser": "^2.1.1",
|
||||
"use-intl": "^4.10.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/next-intl-swc-plugin-extractor": {
|
||||
"version": "4.10.1",
|
||||
"resolved": "https://registry.npmmirror.com/next-intl-swc-plugin-extractor/-/next-intl-swc-plugin-extractor-4.10.1.tgz",
|
||||
"integrity": "sha512-5mA06cAaxiEcyvP3eFo/dMEV1bUTosTP8vQ+Xv/w9stUE+Hjz4FceTsDUiyaiYYv/8T1gZWh9TW3IeS42je0/g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/next-intl/node_modules/@swc/core": {
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.15.32.tgz",
|
||||
"integrity": "sha512-/eWL0n43D64QWEUHLtTE+jDqjkJhyidjkDhv6f0uJohOUAhywxQ9wXYp845DNNds0JpCdI4Uo0a9bl+vbXf+ew==",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@swc/counter": "^0.1.3",
|
||||
"@swc/types": "^0.1.26"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/swc"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@swc/core-darwin-arm64": "1.15.32",
|
||||
"@swc/core-darwin-x64": "1.15.32",
|
||||
"@swc/core-linux-arm-gnueabihf": "1.15.32",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/core-linux-arm64-musl": "1.15.32",
|
||||
"@swc/core-linux-ppc64-gnu": "1.15.32",
|
||||
"@swc/core-linux-s390x-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-musl": "1.15.32",
|
||||
"@swc/core-win32-arm64-msvc": "1.15.32",
|
||||
"@swc/core-win32-ia32-msvc": "1.15.32",
|
||||
"@swc/core-win32-x64-msvc": "1.15.32"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@swc/helpers": ">=0.5.17"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@swc/helpers": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/next-themes": {
|
||||
"version": "0.4.6",
|
||||
"resolved": "https://registry.npmmirror.com/next-themes/-/next-themes-0.4.6.tgz",
|
||||
@@ -5356,6 +6015,12 @@
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/node-addon-api": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
|
||||
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/node-exports-info": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/node-exports-info/-/node-exports-info-1.6.0.tgz",
|
||||
@@ -5693,6 +6358,12 @@
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/po-parser": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/po-parser/-/po-parser-2.1.1.tgz",
|
||||
"integrity": "sha512-ECF4zHLbUItpUgE3OTtLKlPjeBN+fKEczj2zYjDfCGOzicNs0GK3Vg2IoAYwx7LH/XYw43fZQP6xnZ4TkNxSLQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/possible-typed-array-names": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
|
||||
@@ -6817,6 +7488,27 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/use-intl": {
|
||||
"version": "4.10.1",
|
||||
"resolved": "https://registry.npmmirror.com/use-intl/-/use-intl-4.10.1.tgz",
|
||||
"integrity": "sha512-3NOo1jWtQQv/loWQ5okb3U4La+1g09vP+C9xooWtWTEhNrneBgYxZ2KDfSmaSdKIeQUR2vChI9uJ2/u/sJVHRg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://github.com/sponsors/amannn"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@formatjs/fast-memoize": "^3.1.0",
|
||||
"@schummar/icu-type-parser": "1.21.5",
|
||||
"icu-minify": "^4.10.1",
|
||||
"intl-messageformat": "^11.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/whatwg-encoding": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"gsap": "^3.15.0",
|
||||
"lottie-react": "^2.4.1",
|
||||
"next": "16.2.4",
|
||||
"next-intl": "^4.10.1",
|
||||
"next-themes": "^0.4.6",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
|
||||
Reference in New Issue
Block a user