Skip to content

Commit 6ed9aec

Browse files
committed
Merge main branch into feat/xyzen-chat-landing-page
2 parents 487341a + 0e0c258 commit 6ed9aec

File tree

9 files changed

+883
-13
lines changed

9 files changed

+883
-13
lines changed

web/components.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "new-york",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "",
8+
"css": "index.css",
9+
"baseColor": "neutral",
10+
"cssVariables": true,
11+
"prefix": ""
12+
},
13+
"iconLibrary": "lucide",
14+
"aliases": {
15+
"components": "@/components",
16+
"utils": "@/lib/utils",
17+
"ui": "@/components/ui",
18+
"lib": "@/lib",
19+
"hooks": "@/hooks"
20+
},
21+
"registries": {}
22+
}

web/index.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
@import "tw-animate-css";
33
@source "node_modules/@sciol/xyzen/dist/xyzen.css";
44

5+
/* Tailwind v4: use @import to include other CSS files; @source is for class scanning only */
6+
@import "@/styles/markdown.css";
7+
@import "@/styles/markdown.abstract.css";
8+
@import "@/styles/markdown.dark.css";
9+
@import "@/styles/markdown.quote.css";
10+
@import "@/styles/prose.css";
11+
512
@custom-variant dark (&:where(.dark, .dark *));
613

714
/* 主题扩展 */
@@ -315,6 +322,7 @@ body {
315322
* {
316323
@apply border-border outline-ring/50;
317324
}
325+
318326
body {
319327
@apply bg-background text-foreground;
320328
}

web/package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,18 @@
2121
"@monaco-editor/react": "^4.7.0",
2222
"@react-three/drei": "^10.7.6",
2323
"@react-three/fiber": "^9.4.0",
24-
"@sciol/xyzen": "^0.3.8",
24+
"@sciol/xyzen": "^0.3.16",
2525
"@tailwindcss/postcss": "^4.1.14",
2626
"@tailwindcss/vite": "^4.1.14",
2727
"@tanstack/react-query": "^5.90.5",
2828
"autoprefixer": "^10.4.21",
2929
"axios": "^1.12.2",
30+
"class-variance-authority": "^0.7.1",
31+
"clsx": "^2.1.1",
3032
"framer-motion": "^12.23.24",
3133
"i18next": "^25.5.3",
3234
"i18next-browser-languagedetector": "^8.2.0",
33-
"lucide-react": "^0.552.0",
35+
"lucide-react": "^0.553.0",
3436
"monaco-editor": "^0.54.0",
3537
"react": "^19.2.0",
3638
"react-dom": "^19.2.0",
@@ -39,6 +41,7 @@
3941
"react-icons": "^5.5.0",
4042
"react-router-dom": "^7.9.3",
4143
"react-use-websocket": "^4.13.0",
44+
"tailwind-merge": "^3.4.0",
4245
"tailwindcss": "^4.1.14",
4346
"three": "^0.180.0",
4447
"zustand": "^5.0.8"
@@ -57,6 +60,7 @@
5760
"eslint-plugin-react-refresh": "^0.4.20",
5861
"globals": "^16.4.0",
5962
"postcss": "^8.5.6",
63+
"tw-animate-css": "^1.4.0",
6064
"typescript": "~5.8.3",
6165
"typescript-eslint": "^8.44.0",
6266
"vite": "^7.1.7"
Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
.markdown-abstract {
2+
blockquote {
3+
/* background-color: #e5e7eb; */
4+
border-left: 2px solid rgb(229, 231, 235);
5+
color: rgb(82, 82, 91);
6+
padding: 0.5rem 1rem;
7+
margin: 1rem 0;
8+
overflow: hidden;
9+
font-style: italic;
10+
display: -webkit-box;
11+
display: block;
12+
-webkit-box-orient: vertical;
13+
-webkit-line-clamp: 1;
14+
}
15+
16+
code > span:first-child {
17+
margin-left: -4px;
18+
}
19+
20+
.dark & {
21+
blockquote {
22+
/* background-color: #343434; */
23+
border-left: 3px solid rgb(113, 113, 122);
24+
color: rgb(161, 161, 170);
25+
}
26+
27+
color: rgb(177, 177, 187);
28+
29+
h1,
30+
h2,
31+
h3,
32+
h4,
33+
h5,
34+
h6 {
35+
color: #e8e8e8;
36+
}
37+
38+
code {
39+
overflow: hidden;
40+
transition: all 0.15s ease-in-out;
41+
padding: 2px 4px;
42+
font-size: 0.9rem;
43+
font-weight: 600;
44+
background-color: #343434;
45+
border-radius: 3px;
46+
color: #ffffff;
47+
}
48+
49+
code:hover {
50+
background-color: rgb(67, 56, 202);
51+
color: #fff;
52+
}
53+
54+
img {
55+
margin: 1rem 0 1.5rem 0;
56+
max-width: 100%;
57+
border: rgba(60, 60, 60, 0.6) 1px solid;
58+
border-radius: 5px;
59+
box-shadow:
60+
0 4px 6px rgba(60, 60, 60, 0.4),
61+
0 1px 3px rgba(60, 60, 60, 0.3);
62+
display: block;
63+
box-sizing: content-box;
64+
margin-left: auto;
65+
margin-right: auto;
66+
}
67+
68+
hr {
69+
background-color: #505050;
70+
}
71+
72+
p {
73+
color: rgb(161, 161, 170);
74+
}
75+
}
76+
77+
font-feature-settings:
78+
"lnum" 1,
79+
"tnum" 1;
80+
font-size: 14px;
81+
line-height: 1.6;
82+
letter-spacing: 0px;
83+
font-weight: 400;
84+
margin-top: 1rem;
85+
font-family: inherit;
86+
87+
& > img {
88+
margin-bottom: 20px;
89+
}
90+
91+
img {
92+
margin: 1rem 0 1.5rem 0;
93+
max-width: 100%;
94+
border: rgba(139, 139, 139, 0.2) 1px solid;
95+
border-radius: 2%;
96+
box-shadow:
97+
0 4px 6px rgba(0, 0, 0, 0.1),
98+
0 1px 3px rgba(0, 0, 0, 0.08);
99+
display: block;
100+
box-sizing: content-box;
101+
margin-left: auto;
102+
margin-right: auto;
103+
}
104+
105+
h1,
106+
h2,
107+
h3,
108+
h4,
109+
h5,
110+
h6 {
111+
margin-top: 1rem;
112+
margin-bottom: 0.5rem;
113+
font-weight: 600;
114+
line-height: 1.25;
115+
}
116+
117+
h1 {
118+
font-size: 0.95rem;
119+
}
120+
121+
h2 {
122+
font-size: 0.9rem;
123+
}
124+
125+
hr {
126+
height: 2px;
127+
padding: 0;
128+
margin: 24px 0;
129+
background-color: #eaecef;
130+
border: 0;
131+
}
132+
133+
p {
134+
margin-top: 1.5rem;
135+
line-height: 1.6;
136+
font-size: 0.85rem;
137+
}
138+
139+
p:first-child {
140+
margin-top: 0;
141+
}
142+
143+
p:last-child {
144+
margin-bottom: 0;
145+
}
146+
147+
a {
148+
color: rgb(113, 141, 255);
149+
display: inline-flex;
150+
align-items: center;
151+
text-decoration: none;
152+
background-color: transparent;
153+
font-weight: 600;
154+
cursor: pointer;
155+
position: relative;
156+
overflow: hidden;
157+
word-wrap: break-word;
158+
word-break: break-all;
159+
}
160+
161+
a img {
162+
margin: 0;
163+
vertical-align: middle;
164+
}
165+
166+
a::before {
167+
content: "";
168+
position: absolute;
169+
width: 100%;
170+
height: 1.5px;
171+
background-color: rgb(113, 141, 255);
172+
left: 50%;
173+
bottom: 0;
174+
transform: translateX(-50%) scaleX(0);
175+
transform-origin: center;
176+
transition: transform 0.3s;
177+
}
178+
179+
a:not(:has(img)):hover::before {
180+
transform: translateX(-50%) scaleX(1);
181+
}
182+
183+
ol {
184+
list-style: decimal;
185+
padding-top: 1rem;
186+
padding-left: 1.5rem;
187+
188+
li {
189+
margin-top: 0.25rem;
190+
list-style: decimal;
191+
padding-block: 0.25rem;
192+
}
193+
}
194+
195+
ul {
196+
list-style: disc;
197+
padding-top: 1rem;
198+
padding-left: 1.5rem;
199+
200+
li {
201+
margin-top: 0.25rem;
202+
list-style: disc;
203+
padding-block: 0.25rem;
204+
}
205+
}
206+
207+
code {
208+
overflow: hidden;
209+
transition: all 0.15s ease-in-out;
210+
padding: 2px 4px;
211+
font-size: 0.9rem;
212+
font-weight: 600;
213+
background-color: #f0f0f0;
214+
border-radius: 3px;
215+
color: #000;
216+
}
217+
218+
code:hover {
219+
background-color: #4c6ef5;
220+
color: #fff;
221+
}
222+
223+
table {
224+
display: block;
225+
width: 100%;
226+
width: max-content;
227+
max-width: 100%;
228+
overflow: auto;
229+
margin-bottom: 16px;
230+
231+
tr {
232+
border-top: 1px solid #d8dee4;
233+
234+
/* &:nth-child(2n) {
235+
background-color: #f6f8fa;
236+
} */
237+
}
238+
239+
th {
240+
font-weight: 600;
241+
}
242+
243+
th,
244+
td {
245+
padding: 6px 13px;
246+
border: 1px solid #d0d7de;
247+
}
248+
}
249+
}

0 commit comments

Comments
 (0)