Skip to content

Commit ddc7332

Browse files
committed
feat: refresh IoTSharp portfolio styling
1 parent 312b60f commit ddc7332

15 files changed

Lines changed: 1813 additions & 651 deletions

‎components/footer/index.tsx‎

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ const linkGroups = [
1010
{
1111
title: "核心项目",
1212
links: [
13-
{label: "IoTSharp", link: "https://iotsharp.net/IoTSharp/"},
14-
{label: "SonnetDB", link: "https://www.sonnetdb.com/"},
15-
{label: "IoTCoWork", link: "https://iotsharp.net/IoTCoWork/"},
16-
{label: "IoTEdge", link: "https://iotsharp.net/IoTEdge/"},
17-
{label: "IoTEmBASIC", link: "https://iotsharp.net/IoTEmBASIC/"}
13+
{label: "IoTSharp", link: "/IoTSharp/"},
14+
{label: "SonnetDB", link: "/SonnetDB/"},
15+
{label: "IoTCoWork", link: "/IoTCoWork/"},
16+
{label: "IoTEdge", link: "/IoTEdge/"},
17+
{label: "IoTEmBASIC", link: "/IoTEmBASIC/"}
1818
]
1919
},
2020
{
@@ -24,8 +24,8 @@ const linkGroups = [
2424
{label: "文档", link: "https://iotsharp.net/docs/"},
2525
{label: "AI 服务", link: "https://iotsharp.net/ai"},
2626
{label: "IoTSharp 在线演示", link: "https://iotsharp.online/"},
27-
{label: "平台控制台", link: "https://iotsharp.net/console"},
28-
{label: "组织主页", link: "https://iotsharp.net"}
27+
{label: "企业服务", link: "https://iotsharp.net/console"},
28+
{label: "更多项目", link: "/projects/"}
2929
]
3030
},
3131
{
@@ -60,7 +60,12 @@ const Footer: FC<IFooterProps> = ({}) => {
6060
<span className={styles.title}>{group.title}</span>
6161
<div className={styles.links}>
6262
{group.links.map((item) => (
63-
<a href={item.link} target="_blank" rel="noreferrer" key={item.link}>
63+
<a
64+
href={item.link}
65+
target={item.link.startsWith("http") ? "_blank" : undefined}
66+
rel={item.link.startsWith("http") ? "noreferrer" : undefined}
67+
key={item.link}
68+
>
6469
{item.label}
6570
</a>
6671
))}

‎components/footer/styles.module.scss‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
.footer {
44
padding: 4.5rem 8rem 3rem;
55
color: #ffffff;
6-
background-color: #32145a;
6+
background: var(--fluent-gradient);
77
}
88

99
.topArea {
@@ -25,7 +25,7 @@
2525
.summary {
2626
max-width: 24rem;
2727
margin: 1.4rem 0 0;
28-
color: #f2eaff;
28+
color: rgba(241, 246, 255, 0.82);
2929
font-size: 0.98rem;
3030
line-height: 1.7rem;
3131
}
@@ -42,7 +42,7 @@
4242
}
4343

4444
.title {
45-
color: #50e6ff;
45+
color: #c7d4ff;
4646
font-size: 0.82rem;
4747
font-weight: 700;
4848
letter-spacing: 0;
@@ -63,7 +63,7 @@
6363
transition: color 0.2s ease;
6464

6565
&:hover {
66-
color: #50e6ff;
66+
color: #c7d4ff;
6767
}
6868
}
6969
}
@@ -72,18 +72,18 @@
7272
display: flex;
7373
justify-content: space-between;
7474
gap: 1rem;
75-
border-top: 1px solid rgba(255, 255, 255, 0.16);
75+
border-top: 1px solid rgba(255, 255, 255, 0.22);
7676
margin-top: 3.5rem;
7777
padding-top: 1.5rem;
78-
color: #f2eaff;
78+
color: rgba(241, 246, 255, 0.78);
7979
font-size: 0.88rem;
8080

8181
a {
8282
color: inherit;
8383
transition: color 0.2s ease;
8484

8585
&:hover {
86-
color: #50e6ff;
86+
color: #c7d4ff;
8787
}
8888
}
8989
}

‎components/navbar/index.tsx‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ export interface INavBarProps {
1212
}
1313

1414
const navLinks = [
15-
{label: "IoTSharp", href: "https://iotsharp.net/IoTSharp/"},
16-
{label: "SonnetDB", href: "https://www.sonnetdb.com/"},
17-
{label: "IoTCoWork", href: "https://iotsharp.net/IoTCoWork/"},
18-
{label: "IoTEdge", href: "https://iotsharp.net/IoTEdge/"},
19-
{label: "IoTEmBASIC", href: "https://iotsharp.net/IoTEmBASIC/"},
20-
{label: "更多项目", href: "#projects"},
21-
{label: "组合商业服务", href: "https://iotsharp.net/console"}
15+
{label: "首页", href: "/"},
16+
{label: "IoTSharp", href: "/IoTSharp/"},
17+
{label: "SonnetDB", href: "/SonnetDB/"},
18+
{label: "IoTCoWork", href: "/IoTCoWork/"},
19+
{label: "IoTEdge", href: "/IoTEdge/"},
20+
{label: "IoTEmBASIC", href: "/IoTEmBASIC/"},
21+
{label: "更多项目", href: "/projects/"},
22+
{label: "企业服务", href: "https://iotsharp.net/console"}
2223
];
2324

2425
const NavBar: FC<INavBarProps> = ({}) => {

‎components/navbar/styles.module.scss‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
display: flex;
33
align-items: center;
44
justify-content: space-between;
5-
background-color: rgba(255, 255, 255, 0.92);
6-
backdrop-filter: blur(0.5rem);
7-
border-bottom: 1px solid #e7e3f7;
5+
background-color: var(--fluent-surface);
6+
backdrop-filter: blur(1.25rem) saturate(140%);
7+
border-bottom: 1px solid var(--fluent-line);
88
width: 100%;
99
height: 4rem;
1010
position: sticky;
@@ -27,15 +27,15 @@
2727
display: flex;
2828
align-items: center;
2929
gap: 1.8rem;
30-
color: #5c5570;
30+
color: #4d5666;
3131
font-size: 0.9rem;
3232
font-weight: 600;
3333

3434
a {
3535
transition: color 0.2s ease;
3636

3737
&:hover {
38-
color: #512bd4;
38+
color: var(--fluent-purple);
3939
}
4040
}
4141
}
@@ -89,7 +89,7 @@
8989

9090
&:hover,
9191
&:focus-visible {
92-
background: #f1eff8;
92+
background: rgba(91, 95, 199, 0.1);
9393
outline: none;
9494
}
9595
}
@@ -114,7 +114,7 @@
114114
grid-template-columns: repeat(2, minmax(0, 1fr));
115115
gap: 0;
116116
overflow: hidden;
117-
border-top: 1px solid #e7e3f7;
117+
border-top: 1px solid var(--fluent-line);
118118

119119
a {
120120
min-height: 2.75rem;

‎data/products.ts‎

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
export interface Product {
2+
slug: string;
3+
name: string;
4+
category: string;
5+
role: string;
6+
summary: string;
7+
description: string;
8+
websiteLabel: string;
9+
website: string;
10+
github: string;
11+
gitee: string;
12+
tags: string[];
13+
highlights: string[];
14+
}
15+
16+
export const products: Product[] = [
17+
{
18+
slug: "IoTSharp",
19+
name: "IoTSharp",
20+
category: "工业物联网平台",
21+
role: "连接现场设备与数字业务",
22+
summary: "开源的设备、资产、规则链和遥测平台,为工业现场提供统一的数据入口。",
23+
description: "IoTSharp 把设备接入、数字孪生、遥测、属性、事件、告警和规则链组织在一套开放平台中,帮助团队从现场连接一路走到业务应用。",
24+
websiteLabel: "在线演示",
25+
website: "https://iotsharp.online/",
26+
github: "https://github.com/IoTSharp/IoTSharp",
27+
gitee: "https://gitee.com/IoTSharp/IoTSharp",
28+
tags: ["设备接入", "数字孪生", "规则链"],
29+
highlights: ["HTTP、MQTT、CoAP 等多协议接入", "设备、产品、资产和租户模型", "遥测、告警、RPC 与规则链编排"]
30+
},
31+
{
32+
slug: "SonnetDB",
33+
name: "SonnetDB",
34+
category: "现场数据基础设施",
35+
role: "让时序数据靠近业务与设备",
36+
summary: "面向遥测、指标、向量、全文和对象数据的 .NET 原生数据库。",
37+
description: "SonnetDB 面向边缘与云端的现场数据场景,提供高效写入、SQL 查询和多模型数据能力,并保持熟悉的 .NET 开发体验。",
38+
websiteLabel: "产品官网",
39+
website: "https://www.sonnetdb.com/",
40+
github: "https://github.com/IoTSharp/SonnetDB",
41+
gitee: "https://gitee.com/IoTSharp/SonnetDB",
42+
tags: ["时序", "多模型", ".NET 10"],
43+
highlights: ["高频遥测与指标写入", "时序、向量、全文和对象数据", "单机、边缘和托管部署路径"]
44+
},
45+
{
46+
slug: "IoTCoWork",
47+
name: "IoTCoWork",
48+
category: "工程工作台",
49+
role: "在本地完成建模、调试与生成",
50+
summary: "面向 IoTSharp 生态的 Blazor Hybrid 本地工作台。",
51+
description: "IoTCoWork 把工程建模、设备调试、脚本设计、Copilot 协作和产物生成放进一个本地优先的工作台,适合现场工程师与开发者协作。",
52+
websiteLabel: "产品页面",
53+
website: "https://iotsharp.net/IoTCoWork/",
54+
github: "https://github.com/IoTSharp/IoTCoWork",
55+
gitee: "https://gitee.com/IoTSharp/IoTCoWork",
56+
tags: ["Blazor Hybrid", "建模", "Copilot"],
57+
highlights: ["本地优先的工程项目与配置", "设备调试、脚本设计和代码生成", "与 IoTSharp、IoTEdge 的协作入口"]
58+
},
59+
{
60+
slug: "IoTEdge",
61+
name: "IoTEdge",
62+
category: "边缘运行时",
63+
role: "把采集与计算带到现场",
64+
summary: "面向工业连接、采集循环与上报通道的 C# AOT 边缘基座。",
65+
description: "IoTEdge 运行在靠近设备的环境中,承载工业协议连接、采集任务、数据转换和上报通道,适合资源受限或需要离线运行的现场。",
66+
websiteLabel: "产品页面",
67+
website: "https://iotsharp.net/IoTEdge/",
68+
github: "https://github.com/IoTSharp/IoTEdge",
69+
gitee: "https://gitee.com/IoTSharp/IoTEdge",
70+
tags: ["C# AOT", "边缘网关", "离线运行"],
71+
highlights: ["C# AOT 运行时与低依赖部署", "采集循环、缓存和可靠上报", "适配工业协议与 IoTSharp 平台"]
72+
},
73+
{
74+
slug: "IoTEmBASIC",
75+
name: "IoTEmBASIC",
76+
category: "嵌入式运行时",
77+
role: "为低资源设备保留开发自由",
78+
summary: "覆盖 STM32、RTOS、bare-metal 与低资源 Linux 的嵌入式 BASIC/C 运行时。",
79+
description: "IoTEmBASIC 面向微控制器和低资源设备,提供适合现场控制与快速试验的 BASIC/C 运行时,并沿用 IoTSharp 的设备连接思路。",
80+
websiteLabel: "产品页面",
81+
website: "https://iotsharp.net/IoTEmBASIC/",
82+
github: "https://github.com/IoTSharp/IoTEmbedded",
83+
gitee: "https://gitee.com/IoTSharp/IoTEmbedded",
84+
tags: ["Embedded BASIC", "STM32", "RTOS"],
85+
highlights: ["STM32、RTOS 和 bare-metal 目标", "BASIC/C 混合开发体验", "面向低资源设备的轻量通信能力"]
86+
}
87+
];
88+
89+
export const featuredProducts = products;
90+
91+
export const getProduct = (slug: string): Product | undefined =>
92+
products.find((product) => product.slug === slug);

0 commit comments

Comments
 (0)