Skip to content

Commit 312b60f

Browse files
committed
feat: expose portfolio product entry points
1 parent 26f4b12 commit 312b60f

7 files changed

Lines changed: 104 additions & 31 deletions

File tree

‎components/footer/index.tsx‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const linkGroups = [
1111
title: "核心项目",
1212
links: [
1313
{label: "IoTSharp", link: "https://iotsharp.net/IoTSharp/"},
14+
{label: "SonnetDB", link: "https://www.sonnetdb.com/"},
1415
{label: "IoTCoWork", link: "https://iotsharp.net/IoTCoWork/"},
1516
{label: "IoTEdge", link: "https://iotsharp.net/IoTEdge/"},
1617
{label: "IoTEmBASIC", link: "https://iotsharp.net/IoTEmBASIC/"}
@@ -22,6 +23,7 @@ const linkGroups = [
2223
{label: "GitHub", link: "https://github.com/IoTSharp"},
2324
{label: "文档", link: "https://iotsharp.net/docs/"},
2425
{label: "AI 服务", link: "https://iotsharp.net/ai"},
26+
{label: "IoTSharp 在线演示", link: "https://iotsharp.online/"},
2527
{label: "平台控制台", link: "https://iotsharp.net/console"},
2628
{label: "组织主页", link: "https://iotsharp.net"}
2729
]

‎components/footer/styles.module.scss‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
color: #50e6ff;
4646
font-size: 0.82rem;
4747
font-weight: 700;
48-
letter-spacing: 0.12em;
48+
letter-spacing: 0;
4949
line-height: 1.25rem;
5050
text-transform: uppercase;
5151
}

‎components/navbar/index.tsx‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ export interface INavBarProps {
1313

1414
const navLinks = [
1515
{label: "IoTSharp", href: "https://iotsharp.net/IoTSharp/"},
16+
{label: "SonnetDB", href: "https://www.sonnetdb.com/"},
1617
{label: "IoTCoWork", href: "https://iotsharp.net/IoTCoWork/"},
1718
{label: "IoTEdge", href: "https://iotsharp.net/IoTEdge/"},
1819
{label: "IoTEmBASIC", href: "https://iotsharp.net/IoTEmBASIC/"},
1920
{label: "更多项目", href: "#projects"},
20-
{label: "商业服务", href: "https://iotsharp.net/console"}
21+
{label: "组合商业服务", href: "https://iotsharp.net/console"}
2122
];
2223

2324
const NavBar: FC<INavBarProps> = ({}) => {
@@ -28,7 +29,7 @@ const NavBar: FC<INavBarProps> = ({}) => {
2829
const iconTheme = theme === Themes.light ? <Moon size={24}/> : <Sun size={24}/>;
2930
return (
3031
<div className={styles.navBar}>
31-
<a href="https://iotsharp.net/">
32+
<a href="https://iotsharp.net/" aria-label="IoTSharp 首页">
3233
<Image src={logoIcon} alt="" width={35} height={35}/>
3334
<Image src={icon} alt="" width={135} height={40}/>
3435
</a>

‎components/navbar/styles.module.scss‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
}
100100
}
101101

102-
@media screen and (max-width: 47.9375rem) {
102+
@media screen and (max-width: 68.75rem) {
103103
.navBar {
104104
height: auto;
105105
min-height: 4rem;

‎pages/_document.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import React from 'react';
44

55
export default function Document() {
66
return (
7-
<Html>
7+
<Html lang="zh-CN">
88
<Head/>
99
<body>
1010
<Main/>

‎pages/index.module.scss‎

Lines changed: 73 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,32 @@
1111
color: #512bd4;
1212
font-size: 0.78rem;
1313
font-weight: 700;
14-
letter-spacing: 0.18em;
14+
letter-spacing: 0;
1515
line-height: 1.4;
1616
text-transform: uppercase;
1717
}
1818

1919
.hero {
2020
position: relative;
2121
display: grid;
22-
min-height: calc(100vh - 4rem);
22+
min-height: calc(100svh - 7rem);
2323
grid-template-columns: minmax(0, 0.95fr) minmax(22rem, 0.75fr);
2424
gap: 4rem;
2525
align-items: center;
26-
padding: 7rem 8rem 6rem;
26+
padding: 5.5rem 8rem 5rem;
2727
color: #ffffff;
28-
background:
29-
radial-gradient(circle at 78% 20%, rgba(80, 230, 255, 0.28), transparent 28%),
30-
linear-gradient(115deg, #32145a 0%, #512bd4 58%, #764abc 100%);
28+
background-color: #32145a;
29+
background-image: url("/banner_dark.png");
30+
background-position: center;
31+
background-size: cover;
32+
33+
&:before {
34+
content: "";
35+
position: absolute;
36+
inset: 0;
37+
background: rgba(38, 15, 69, 0.9);
38+
pointer-events: none;
39+
}
3140

3241
&:after {
3342
content: "";
@@ -50,7 +59,7 @@
5059
h1 {
5160
max-width: 52rem;
5261
margin: 1.4rem 0 0;
53-
font-size: clamp(3rem, 7vw, 6.2rem);
62+
font-size: 5rem;
5463
font-weight: 700;
5564
line-height: 1.02;
5665
}
@@ -71,6 +80,29 @@
7180
margin-top: 2.5rem;
7281
}
7382

83+
.utilityLinks {
84+
display: flex;
85+
flex-wrap: wrap;
86+
gap: 0.75rem 1.4rem;
87+
margin-top: 1.25rem;
88+
89+
a {
90+
border-bottom: 1px solid rgba(255, 255, 255, 0.5);
91+
color: #ffffff;
92+
font-size: 0.9rem;
93+
font-weight: 650;
94+
line-height: 1.8;
95+
transition: border-color 0.2s ease, color 0.2s ease;
96+
97+
&:hover,
98+
&:focus-visible {
99+
border-color: #50e6ff;
100+
color: #50e6ff;
101+
outline: none;
102+
}
103+
}
104+
}
105+
74106
.primaryAction,
75107
.secondaryAction {
76108
display: inline-flex;
@@ -88,6 +120,11 @@
88120
}
89121
}
90122

123+
.actionIcon {
124+
flex: 0 0 auto;
125+
margin-right: 0.45rem;
126+
}
127+
91128
.primaryAction {
92129
color: #512bd4;
93130
background: #ffffff;
@@ -123,7 +160,7 @@
123160
color: #50e6ff;
124161
font-size: 0.76rem;
125162
font-weight: 700;
126-
letter-spacing: 0.16em;
163+
letter-spacing: 0;
127164
text-transform: uppercase;
128165
}
129166

@@ -159,7 +196,7 @@
159196
h2 {
160197
margin: 1rem 0 0;
161198
color: #20133a;
162-
font-size: clamp(2rem, 4vw, 3.4rem);
199+
font-size: 3rem;
163200
font-weight: 700;
164201
line-height: 1.12;
165202
}
@@ -371,7 +408,7 @@
371408

372409
h2 {
373410
margin: 1rem 0 0;
374-
font-size: clamp(1.9rem, 4vw, 3rem);
411+
font-size: 2.7rem;
375412
line-height: 1.12;
376413
}
377414

@@ -424,8 +461,17 @@
424461
grid-template-columns: 1fr;
425462
}
426463

464+
.heroContent h1 {
465+
font-size: 3.75rem;
466+
}
467+
468+
.sectionIntro h2,
469+
.boundary h2 {
470+
font-size: 2.5rem;
471+
}
472+
427473
.heroPanel {
428-
grid-template-columns: repeat(3, minmax(0, 1fr));
474+
grid-template-columns: repeat(2, minmax(0, 1fr));
429475
}
430476

431477
.capabilityGrid,
@@ -452,28 +498,36 @@
452498
min-height: auto;
453499
grid-template-columns: 1fr;
454500
gap: 2.5rem;
455-
padding-top: 5rem;
501+
padding-top: 4rem;
456502
padding-bottom: 4rem;
457503
}
458504

505+
.heroContent h1 {
506+
font-size: 2.65rem;
507+
line-height: 1.08;
508+
}
509+
510+
.sectionIntro h2,
511+
.boundary h2 {
512+
font-size: 2rem;
513+
}
514+
459515
.heroText {
460516
font-size: 1rem;
461517
line-height: 1.75rem;
462518
}
463519

464-
.actions {
465-
flex-direction: column;
466-
}
467-
468520
.primaryAction,
469521
.secondaryAction {
470522
width: 100%;
471523
}
472524

525+
.utilityLinks {
526+
gap: 0.55rem 1rem;
527+
}
528+
473529
.heroPanel {
474-
div {
475-
padding-left: 1rem;
476-
}
530+
display: none;
477531
}
478532

479533
.capabilities,

‎pages/index.tsx‎

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {NextPage} from "next";
33
import NavBar from "@/components/navbar";
44
import Footer from "@/components/footer";
55
import styles from "./index.module.scss";
6+
import {ArrowUpRight} from "lucide-react";
67

78
const projectGroups = [
89
{
@@ -27,7 +28,7 @@ const projectGroups = [
2728
name: "SonnetDB",
2829
role: "C# 时序数据库",
2930
description: "面向高频遥测、指标写入、SQL 查询和边缘部署的 .NET 10 时序数据库。",
30-
page: "https://sonnetdb.com/",
31+
page: "https://www.sonnetdb.com/",
3132
repo: "https://github.com/IoTSharp/SonnetDB"
3233
},
3334
{
@@ -182,12 +183,22 @@ const Home: NextPage = () => {
182183
<p className={styles.eyebrow}>iotsharp.net · Open Source Home</p>
183184
<h1>IoTSharp 开源产品矩阵</h1>
184185
<p className={styles.heroText}>
185-
这里是 IoTSharp 组织的开源门面:从物联网主平台、IoTCoWork 工作台、IoTEdge 与 IoTEmbedded 边缘产品线,到协议 SDK、嵌入式工具和开发者组件。
186+
这里是 IoTSharp 产品组合的开源门面:以 IoTSharp 物联网平台连接现场,以 SonnetDB 承载时序与智能数据,再延伸到边缘、协议 SDK 和开发者工具。
186187
</p>
187188
<div className={styles.actions}>
188-
<a href="#projects" className={styles.primaryAction}>浏览开源项目</a>
189-
<a href="https://github.com/IoTSharp" className={styles.secondaryAction} target="_blank" rel="noreferrer">GitHub 组织</a>
190-
<a href="https://iotsharp.net/console" className={styles.secondaryAction}>平台控制台</a>
189+
<a href="https://iotsharp.online/" className={styles.primaryAction} target="_blank" rel="noreferrer">
190+
<ArrowUpRight size={17} aria-hidden="true" className={styles.actionIcon}/>
191+
IoTSharp 在线演示
192+
</a>
193+
<a href="https://www.sonnetdb.com/" className={styles.secondaryAction} target="_blank" rel="noreferrer">
194+
<ArrowUpRight size={17} aria-hidden="true" className={styles.actionIcon}/>
195+
SonnetDB 产品
196+
</a>
197+
</div>
198+
<div className={styles.utilityLinks}>
199+
<a href="#projects">浏览开源项目</a>
200+
<a href="https://github.com/IoTSharp" target="_blank" rel="noreferrer">GitHub 组织</a>
201+
<a href="https://iotsharp.net/console">组合商业服务</a>
191202
</div>
192203
</div>
193204
<div className={styles.heroPanel} aria-label="IoTSharp open source map">
@@ -206,6 +217,11 @@ const Home: NextPage = () => {
206217
<strong>IoTEdge · IoTEmbedded</strong>
207218
<small>C# AOT / Embedded BASIC+C</small>
208219
</div>
220+
<div>
221+
<span>Data platform</span>
222+
<strong>SonnetDB</strong>
223+
<small>时序 / 向量 / 全文 / 对象数据</small>
224+
</div>
209225
</div>
210226
</section>
211227

@@ -283,9 +299,9 @@ const Home: NextPage = () => {
283299
<h2>一个域名连接开源生态、文档、AI 与商业平台</h2>
284300
</div>
285301
<p>
286-
开源项目、产品文档和行业内容从 iotsharp.net 统一进入;平台控制台、AI 服务、演示环境与商业交付分别通过 /console、/ai、/demo 和企业服务流程承载。
302+
开源项目、产品文档和行业内容从 iotsharp.net 统一进入;IoTSharp 与 SonnetDB 的演示、平台控制台、AI 服务和企业交付分别通过独立入口承载。
287303
</p>
288-
<a href="https://iotsharp.net/console">进入平台控制台</a>
304+
<a href="https://iotsharp.net/console">进入组合商业服务</a>
289305
</section>
290306
</main>
291307
<Footer/>

0 commit comments

Comments
 (0)