podo-ui 0.1.46 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/react/atom/pagination.module.scss +61 -0
- package/react/atom/pagination.tsx +87 -0
- package/react.ts +2 -1
- package/readme.md +3 -3
- package/scss/color/theme.scss +92 -0
- package/scss/form/checkbox-radio.scss +48 -0
- package/scss/form/toggle.scss +16 -0
- package/scss/layout/bg-elevation.scss +14 -0
- package/scss/reset.scss +2 -0
- package/.prettierignore +0 -9
- package/.prettierrc +0 -8
- package/ARCHITECTURE.md +0 -727
- package/cli/icon-scss.js +0 -56
- package/eslint.config.js +0 -26
- package/index.html +0 -12
- package/next-env.d.ts +0 -5
- package/next.config.mjs +0 -10
- package/public/logo.svg +0 -57
- package/src/app/components/button/page.module.scss +0 -253
- package/src/app/components/button/page.tsx +0 -366
- package/src/app/components/checkbox-radio/page.module.scss +0 -95
- package/src/app/components/checkbox-radio/page.tsx +0 -265
- package/src/app/components/input/page.module.scss +0 -112
- package/src/app/components/input/page.tsx +0 -196
- package/src/app/components/select/page.module.scss +0 -90
- package/src/app/components/select/page.tsx +0 -225
- package/src/app/components/textarea/page.module.scss +0 -81
- package/src/app/components/textarea/page.tsx +0 -103
- package/src/app/foundation/colors/page.module.scss +0 -370
- package/src/app/foundation/colors/page.tsx +0 -200
- package/src/app/foundation/icons/page.module.scss +0 -229
- package/src/app/foundation/icons/page.tsx +0 -229
- package/src/app/foundation/spacing/page.module.scss +0 -258
- package/src/app/foundation/spacing/page.tsx +0 -289
- package/src/app/foundation/typography/page.module.scss +0 -148
- package/src/app/foundation/typography/page.tsx +0 -207
- package/src/app/getting-started/installation/page.module.scss +0 -157
- package/src/app/getting-started/installation/page.tsx +0 -154
- package/src/app/getting-started/usage/page.module.scss +0 -209
- package/src/app/getting-started/usage/page.tsx +0 -242
- package/src/app/home.module.scss +0 -541
- package/src/app/layout/grid/page.module.scss +0 -178
- package/src/app/layout/grid/page.tsx +0 -217
- package/src/app/layout/responsive/page.module.scss +0 -237
- package/src/app/layout/responsive/page.tsx +0 -279
- package/src/app/layout.module.scss +0 -14
- package/src/app/layout.tsx +0 -30
- package/src/app/page.module.scss +0 -71
- package/src/app/page.tsx +0 -284
- package/src/components/CodeBlock.module.scss +0 -29
- package/src/components/CodeBlock.tsx +0 -18
- package/src/components/Navigation.module.scss +0 -104
- package/src/components/Navigation.tsx +0 -96
- package/src/components/PageHeader.module.scss +0 -24
- package/src/components/PageHeader.tsx +0 -17
- package/src/components/ThemeToggle.module.scss +0 -34
- package/src/components/ThemeToggle.tsx +0 -47
- package/src/styles/custom.scss +0 -11
- package/src/styles/doc-common.scss +0 -119
- package/src/styles/font-family.scss +0 -80
- package/src/styles/icon.scss +0 -5
- package/src/vite-env.d.ts +0 -1
- package/tsconfig.json +0 -26
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
@use '../../../../mixin' as *;
|
|
2
|
-
|
|
3
|
-
.section {
|
|
4
|
-
margin-bottom: s(10);
|
|
5
|
-
|
|
6
|
-
h2 {
|
|
7
|
-
@include display5;
|
|
8
|
-
margin: 0 0 s(5) 0;
|
|
9
|
-
color: color(default-deep-base);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
h3 {
|
|
13
|
-
@include p1;
|
|
14
|
-
font-weight: 600;
|
|
15
|
-
margin: s(7) 0 s(4) 0;
|
|
16
|
-
color: color(default-deep-base);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
p {
|
|
20
|
-
@include p2;
|
|
21
|
-
color: color(default-base);
|
|
22
|
-
line-height: 1.8;
|
|
23
|
-
margin: 0 0 s(5) 0;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.codeBlock {
|
|
28
|
-
background: color(bg-modal);
|
|
29
|
-
border: 1px solid color(default-outline);
|
|
30
|
-
border-radius: r(3);
|
|
31
|
-
overflow: hidden;
|
|
32
|
-
margin-bottom: s(4);
|
|
33
|
-
|
|
34
|
-
.codeHeader {
|
|
35
|
-
padding: s(3) s(5);
|
|
36
|
-
background: color(bg-elevation-1);
|
|
37
|
-
border-bottom: 1px solid color(default-outline);
|
|
38
|
-
@include p4;
|
|
39
|
-
font-weight: 600;
|
|
40
|
-
color: color(default-deep-base);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
pre {
|
|
44
|
-
margin: 0;
|
|
45
|
-
padding: s(5);
|
|
46
|
-
overflow-x: auto;
|
|
47
|
-
background: color(bg-elevation);
|
|
48
|
-
|
|
49
|
-
code {
|
|
50
|
-
@include p3;
|
|
51
|
-
font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
|
|
52
|
-
color: color(default-deep-base);
|
|
53
|
-
white-space: pre;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.note,
|
|
59
|
-
.warning {
|
|
60
|
-
display: flex;
|
|
61
|
-
gap: s(4);
|
|
62
|
-
padding: s(5);
|
|
63
|
-
border-radius: r(4);
|
|
64
|
-
margin-bottom: s(5);
|
|
65
|
-
|
|
66
|
-
> i {
|
|
67
|
-
font-size: 20px;
|
|
68
|
-
flex-shrink: 0;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
strong {
|
|
72
|
-
display: block;
|
|
73
|
-
margin-bottom: s(2);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.note {
|
|
78
|
-
background: color(info-fill);
|
|
79
|
-
border: 1px solid color(info-outline);
|
|
80
|
-
color: color(info-base);
|
|
81
|
-
|
|
82
|
-
> i {
|
|
83
|
-
color: color(info-base);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.warning {
|
|
88
|
-
background: color(warning-fill);
|
|
89
|
-
border: 1px solid color(warning-outline);
|
|
90
|
-
color: color(warning-base);
|
|
91
|
-
|
|
92
|
-
> i {
|
|
93
|
-
color: color(warning-base);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.linkGrid {
|
|
98
|
-
display: grid;
|
|
99
|
-
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
100
|
-
gap: s(5);
|
|
101
|
-
margin-top: s(6);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.linkCard {
|
|
105
|
-
display: flex;
|
|
106
|
-
align-items: center;
|
|
107
|
-
gap: s(4);
|
|
108
|
-
padding: s(5);
|
|
109
|
-
background: color(bg-modal);
|
|
110
|
-
border: 1px solid color(default-outline);
|
|
111
|
-
border-radius: r(3);
|
|
112
|
-
text-decoration: none;
|
|
113
|
-
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
114
|
-
|
|
115
|
-
&:hover {
|
|
116
|
-
border-color: color(primary-base);
|
|
117
|
-
transform: translateY(-2px);
|
|
118
|
-
box-shadow: 0 8px 24px rgba(139, 92, 246, 0.15);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.linkIcon {
|
|
122
|
-
width: 48px;
|
|
123
|
-
height: 48px;
|
|
124
|
-
display: flex;
|
|
125
|
-
align-items: center;
|
|
126
|
-
justify-content: center;
|
|
127
|
-
background: linear-gradient(135deg, #8B5CF6 0%, #6366F1 100%);
|
|
128
|
-
color: white;
|
|
129
|
-
border-radius: r(2);
|
|
130
|
-
font-size: 20px;
|
|
131
|
-
flex-shrink: 0;
|
|
132
|
-
box-shadow: 0 4px 12px rgba(139, 92, 246, 0.25);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
> div {
|
|
136
|
-
flex: 1;
|
|
137
|
-
|
|
138
|
-
h4 {
|
|
139
|
-
@include p2;
|
|
140
|
-
font-weight: 600;
|
|
141
|
-
margin: 0 0 s(1) 0;
|
|
142
|
-
color: color(default-deep-base);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
p {
|
|
146
|
-
@include p4;
|
|
147
|
-
margin: 0;
|
|
148
|
-
color: color(default-base);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
> i {
|
|
153
|
-
font-size: 16px;
|
|
154
|
-
color: color(default-base);
|
|
155
|
-
flex-shrink: 0;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import PageHeader from '@/components/PageHeader';
|
|
2
|
-
import styles from './page.module.scss';
|
|
3
|
-
|
|
4
|
-
export default function Installation() {
|
|
5
|
-
return (
|
|
6
|
-
<>
|
|
7
|
-
<PageHeader
|
|
8
|
-
title="설치"
|
|
9
|
-
description="Podo UI를 프로젝트에 설치하고 설정하는 방법을 안내합니다"
|
|
10
|
-
/>
|
|
11
|
-
|
|
12
|
-
<section className={styles.section}>
|
|
13
|
-
<h2>NPM 설치</h2>
|
|
14
|
-
<p>npm, yarn, 또는 pnpm을 사용하여 Podo UI를 설치할 수 있습니다:</p>
|
|
15
|
-
|
|
16
|
-
<div className={styles.codeBlock}>
|
|
17
|
-
<pre><code>npm install podo-ui</code></pre>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div className={styles.codeBlock}>
|
|
21
|
-
<pre><code>yarn add podo-ui</code></pre>
|
|
22
|
-
</div>
|
|
23
|
-
|
|
24
|
-
<div className={styles.codeBlock}>
|
|
25
|
-
<pre><code>pnpm add podo-ui</code></pre>
|
|
26
|
-
</div>
|
|
27
|
-
</section>
|
|
28
|
-
|
|
29
|
-
<section className={styles.section}>
|
|
30
|
-
<h2>기본 설정</h2>
|
|
31
|
-
|
|
32
|
-
<h3>1. Global SCSS 적용</h3>
|
|
33
|
-
<p>애플리케이션의 진입점에서 전역 스타일을 import합니다:</p>
|
|
34
|
-
|
|
35
|
-
<div className={styles.codeBlock}>
|
|
36
|
-
<div className={styles.codeHeader}>main.tsx 또는 App.tsx</div>
|
|
37
|
-
<pre><code>{`import 'podo-ui/global.scss';`}</code></pre>
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
<div className={styles.note}>
|
|
41
|
-
<i className="icon-info"></i>
|
|
42
|
-
<div>
|
|
43
|
-
<strong>참고:</strong> global.scss는 리셋, 컬러, 레이아웃, 타이포그래피, 아이콘, 버튼, 폼 등 모든 기본 스타일을 포함합니다.
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</section>
|
|
47
|
-
|
|
48
|
-
<section className={styles.section}>
|
|
49
|
-
<h3>2. Vite 프로젝트 추가 설정</h3>
|
|
50
|
-
|
|
51
|
-
<div className={styles.warning}>
|
|
52
|
-
<i className="icon-warning"></i>
|
|
53
|
-
<div>
|
|
54
|
-
<strong>중요:</strong> Vite를 사용하는 경우 폰트 경로 재정의가 필요합니다!
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
<p>Vite에서는 node_modules 내의 상대 경로를 올바르게 처리하지 못할 수 있습니다. vite-fonts.scss를 추가로 import하세요:</p>
|
|
59
|
-
|
|
60
|
-
<div className={styles.codeBlock}>
|
|
61
|
-
<div className={styles.codeHeader}>main.tsx (Vite)</div>
|
|
62
|
-
<pre><code>{`import 'podo-ui/global.scss';
|
|
63
|
-
import 'podo-ui/vite-fonts.scss'; // Vite용 폰트 경로 재정의`}</code></pre>
|
|
64
|
-
</div>
|
|
65
|
-
|
|
66
|
-
<div className={styles.note}>
|
|
67
|
-
<i className="icon-info"></i>
|
|
68
|
-
<div>
|
|
69
|
-
<strong>참고:</strong> Next.js나 Create React App 등 다른 번들러는 vite-fonts.scss 없이 사용 가능합니다.
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
72
|
-
</section>
|
|
73
|
-
|
|
74
|
-
<section className={styles.section}>
|
|
75
|
-
<h3>3. SCSS Module에서 변수/함수/믹스인 사용</h3>
|
|
76
|
-
<p>컴포넌트의 SCSS 모듈에서 Podo UI의 함수와 믹스인을 사용하려면 다음과 같이 import합니다:</p>
|
|
77
|
-
|
|
78
|
-
<div className={styles.codeBlock}>
|
|
79
|
-
<div className={styles.codeHeader}>component.module.scss</div>
|
|
80
|
-
<pre><code>{`@use 'podo-ui/mixin' as *;
|
|
81
|
-
|
|
82
|
-
.myComponent {
|
|
83
|
-
color: color(primary); // 컬러 함수
|
|
84
|
-
margin: s(4); // 간격 함수 (12px)
|
|
85
|
-
border-radius: r(2); // 반경 함수
|
|
86
|
-
@include p2; // 타이포그래피 믹스인
|
|
87
|
-
}`}</code></pre>
|
|
88
|
-
</div>
|
|
89
|
-
</section>
|
|
90
|
-
|
|
91
|
-
<section className={styles.section}>
|
|
92
|
-
<h2>React 컴포넌트 사용</h2>
|
|
93
|
-
<p>Podo UI는 일부 React 컴포넌트를 제공합니다. 다음과 같이 import하여 사용할 수 있습니다:</p>
|
|
94
|
-
|
|
95
|
-
<div className={styles.codeBlock}>
|
|
96
|
-
<div className={styles.codeHeader}>일반 React 프로젝트</div>
|
|
97
|
-
<pre><code>{`import { Input, Textarea, Editor, Field } from 'podo-ui/react';`}</code></pre>
|
|
98
|
-
</div>
|
|
99
|
-
|
|
100
|
-
<div className={styles.codeBlock}>
|
|
101
|
-
<div className={styles.codeHeader}>Next.js 프로젝트</div>
|
|
102
|
-
<pre><code>{`import { Input, Textarea, Editor, Field } from 'podo-ui/next';`}</code></pre>
|
|
103
|
-
</div>
|
|
104
|
-
|
|
105
|
-
<div className={styles.note}>
|
|
106
|
-
<i className="icon-info"></i>
|
|
107
|
-
<div>
|
|
108
|
-
<strong>참고:</strong> Next.js용 export는 'use client' 지시어가 포함되어 있으며, Editor 컴포넌트는 SSR이 비활성화되어 있습니다.
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
</section>
|
|
112
|
-
|
|
113
|
-
<section className={styles.section}>
|
|
114
|
-
<h2>다음 단계</h2>
|
|
115
|
-
<p>설치가 완료되었습니다! 이제 다음 문서를 참고하여 Podo UI를 사용해보세요:</p>
|
|
116
|
-
|
|
117
|
-
<div className={styles.linkGrid}>
|
|
118
|
-
<a href="/getting-started/usage" className={styles.linkCard}>
|
|
119
|
-
<div className={styles.linkIcon}>
|
|
120
|
-
<i className="icon-file"></i>
|
|
121
|
-
</div>
|
|
122
|
-
<div>
|
|
123
|
-
<h4>사용법</h4>
|
|
124
|
-
<p>기본 사용법과 예제</p>
|
|
125
|
-
</div>
|
|
126
|
-
<i className="icon-arrow-right"></i>
|
|
127
|
-
</a>
|
|
128
|
-
|
|
129
|
-
<a href="/foundation/colors" className={styles.linkCard}>
|
|
130
|
-
<div className={styles.linkIcon}>
|
|
131
|
-
<i className="icon-ellipse"></i>
|
|
132
|
-
</div>
|
|
133
|
-
<div>
|
|
134
|
-
<h4>컬러 시스템</h4>
|
|
135
|
-
<p>테마와 컬러 사용법</p>
|
|
136
|
-
</div>
|
|
137
|
-
<i className="icon-arrow-right"></i>
|
|
138
|
-
</a>
|
|
139
|
-
|
|
140
|
-
<a href="/components/button" className={styles.linkCard}>
|
|
141
|
-
<div className={styles.linkIcon}>
|
|
142
|
-
<i className="icon-layers"></i>
|
|
143
|
-
</div>
|
|
144
|
-
<div>
|
|
145
|
-
<h4>컴포넌트</h4>
|
|
146
|
-
<p>UI 컴포넌트 둘러보기</p>
|
|
147
|
-
</div>
|
|
148
|
-
<i className="icon-arrow-right"></i>
|
|
149
|
-
</a>
|
|
150
|
-
</div>
|
|
151
|
-
</section>
|
|
152
|
-
</>
|
|
153
|
-
);
|
|
154
|
-
}
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
@use '../../../../mixin' as *;
|
|
2
|
-
|
|
3
|
-
.header {
|
|
4
|
-
margin-bottom: s(10);
|
|
5
|
-
|
|
6
|
-
.title {
|
|
7
|
-
@include display3;
|
|
8
|
-
font-size: 42px;
|
|
9
|
-
font-weight: 700;
|
|
10
|
-
margin: 0 0 s(4) 0;
|
|
11
|
-
color: color(default-deep-base);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.description {
|
|
15
|
-
@include p2;
|
|
16
|
-
font-size: 16px;
|
|
17
|
-
color: color(default-base);
|
|
18
|
-
line-height: 1.8;
|
|
19
|
-
margin: 0;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.section {
|
|
24
|
-
margin-bottom: s(10);
|
|
25
|
-
|
|
26
|
-
h2 {
|
|
27
|
-
@include display5;
|
|
28
|
-
margin: 0 0 s(5) 0;
|
|
29
|
-
color: color(default-deep-base);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
h3 {
|
|
33
|
-
@include p1;
|
|
34
|
-
font-weight: 600;
|
|
35
|
-
margin: s(7) 0 s(4) 0;
|
|
36
|
-
color: color(default-deep-base);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
p {
|
|
40
|
-
@include p2;
|
|
41
|
-
color: color(default-base);
|
|
42
|
-
line-height: 1.8;
|
|
43
|
-
margin: 0 0 s(5) 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
code {
|
|
47
|
-
@include p4;
|
|
48
|
-
font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
|
|
49
|
-
background: color(bg-elevation);
|
|
50
|
-
padding: s(1) s(2);
|
|
51
|
-
border-radius: r(1);
|
|
52
|
-
color: color(primary-base);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.example {
|
|
57
|
-
margin-bottom: s(6);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.preview {
|
|
61
|
-
display: flex;
|
|
62
|
-
flex-wrap: wrap;
|
|
63
|
-
gap: s(3);
|
|
64
|
-
padding: s(6);
|
|
65
|
-
background: color(bg-modal);
|
|
66
|
-
border: 1px solid color(default-outline);
|
|
67
|
-
border-radius: r(3) r(3) 0 0;
|
|
68
|
-
border-bottom: none;
|
|
69
|
-
align-items: flex-start;
|
|
70
|
-
|
|
71
|
-
:global(.btn) {
|
|
72
|
-
// 버튼 스타일이 제대로 적용되도록 보장
|
|
73
|
-
display: inline-flex;
|
|
74
|
-
align-items: center;
|
|
75
|
-
justify-content: center;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
:global(.input) {
|
|
79
|
-
// Input 스타일이 제대로 적용되도록 보장
|
|
80
|
-
width: auto;
|
|
81
|
-
min-width: 200px;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.codeBlock {
|
|
86
|
-
background: color(bg-modal);
|
|
87
|
-
border: 1px solid color(default-outline);
|
|
88
|
-
border-radius: r(3);
|
|
89
|
-
overflow: hidden;
|
|
90
|
-
margin-bottom: s(4);
|
|
91
|
-
|
|
92
|
-
.codeHeader {
|
|
93
|
-
padding: s(3) s(5);
|
|
94
|
-
background: color(bg-elevation-1);
|
|
95
|
-
border-bottom: 1px solid color(default-outline);
|
|
96
|
-
@include p4;
|
|
97
|
-
font-weight: 600;
|
|
98
|
-
color: color(default-deep-base);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
pre {
|
|
102
|
-
margin: 0;
|
|
103
|
-
padding: s(5);
|
|
104
|
-
overflow-x: auto;
|
|
105
|
-
background: color(bg-elevation);
|
|
106
|
-
|
|
107
|
-
code {
|
|
108
|
-
@include p3;
|
|
109
|
-
font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
|
|
110
|
-
color: color(default-deep-base);
|
|
111
|
-
white-space: pre;
|
|
112
|
-
background: none;
|
|
113
|
-
padding: 0;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.example .codeBlock {
|
|
119
|
-
border-radius: 0 0 r(3) r(3);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
.note {
|
|
123
|
-
display: flex;
|
|
124
|
-
gap: s(4);
|
|
125
|
-
padding: s(5);
|
|
126
|
-
border-radius: r(3);
|
|
127
|
-
margin-bottom: s(5);
|
|
128
|
-
background: color(info-fill);
|
|
129
|
-
border: 1px solid color(info-outline);
|
|
130
|
-
color: color(info-base);
|
|
131
|
-
|
|
132
|
-
> i {
|
|
133
|
-
font-size: 20px;
|
|
134
|
-
flex-shrink: 0;
|
|
135
|
-
color: color(info-base);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
strong {
|
|
139
|
-
display: block;
|
|
140
|
-
margin-bottom: s(2);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
code {
|
|
144
|
-
background: rgba(255, 255, 255, 0.5);
|
|
145
|
-
color: color(info-base);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.linkGrid {
|
|
150
|
-
display: grid;
|
|
151
|
-
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
152
|
-
gap: s(5);
|
|
153
|
-
margin-top: s(6);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.linkCard {
|
|
157
|
-
display: flex;
|
|
158
|
-
align-items: center;
|
|
159
|
-
gap: s(4);
|
|
160
|
-
padding: s(5);
|
|
161
|
-
background: color(bg-modal);
|
|
162
|
-
border: 1px solid color(default-outline);
|
|
163
|
-
border-radius: r(3);
|
|
164
|
-
text-decoration: none;
|
|
165
|
-
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
166
|
-
|
|
167
|
-
&:hover {
|
|
168
|
-
border-color: color(primary-base);
|
|
169
|
-
transform: translateY(-2px);
|
|
170
|
-
box-shadow: 0 8px 24px rgba(139, 92, 246, 0.15);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.linkIcon {
|
|
174
|
-
width: 48px;
|
|
175
|
-
height: 48px;
|
|
176
|
-
display: flex;
|
|
177
|
-
align-items: center;
|
|
178
|
-
justify-content: center;
|
|
179
|
-
background: linear-gradient(135deg, #8B5CF6 0%, #6366F1 100%);
|
|
180
|
-
color: white;
|
|
181
|
-
border-radius: r(2);
|
|
182
|
-
font-size: 20px;
|
|
183
|
-
flex-shrink: 0;
|
|
184
|
-
box-shadow: 0 4px 12px rgba(139, 92, 246, 0.25);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
> div {
|
|
188
|
-
flex: 1;
|
|
189
|
-
|
|
190
|
-
h4 {
|
|
191
|
-
@include p2;
|
|
192
|
-
font-weight: 600;
|
|
193
|
-
margin: 0 0 s(1) 0;
|
|
194
|
-
color: color(default-deep-base);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
p {
|
|
198
|
-
@include p4;
|
|
199
|
-
margin: 0;
|
|
200
|
-
color: color(default-base);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
> i {
|
|
205
|
-
font-size: 16px;
|
|
206
|
-
color: color(default-base);
|
|
207
|
-
flex-shrink: 0;
|
|
208
|
-
}
|
|
209
|
-
}
|