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.
Files changed (64) hide show
  1. package/package.json +2 -2
  2. package/react/atom/pagination.module.scss +61 -0
  3. package/react/atom/pagination.tsx +87 -0
  4. package/react.ts +2 -1
  5. package/readme.md +3 -3
  6. package/scss/color/theme.scss +92 -0
  7. package/scss/form/checkbox-radio.scss +48 -0
  8. package/scss/form/toggle.scss +16 -0
  9. package/scss/layout/bg-elevation.scss +14 -0
  10. package/scss/reset.scss +2 -0
  11. package/.prettierignore +0 -9
  12. package/.prettierrc +0 -8
  13. package/ARCHITECTURE.md +0 -727
  14. package/cli/icon-scss.js +0 -56
  15. package/eslint.config.js +0 -26
  16. package/index.html +0 -12
  17. package/next-env.d.ts +0 -5
  18. package/next.config.mjs +0 -10
  19. package/public/logo.svg +0 -57
  20. package/src/app/components/button/page.module.scss +0 -253
  21. package/src/app/components/button/page.tsx +0 -366
  22. package/src/app/components/checkbox-radio/page.module.scss +0 -95
  23. package/src/app/components/checkbox-radio/page.tsx +0 -265
  24. package/src/app/components/input/page.module.scss +0 -112
  25. package/src/app/components/input/page.tsx +0 -196
  26. package/src/app/components/select/page.module.scss +0 -90
  27. package/src/app/components/select/page.tsx +0 -225
  28. package/src/app/components/textarea/page.module.scss +0 -81
  29. package/src/app/components/textarea/page.tsx +0 -103
  30. package/src/app/foundation/colors/page.module.scss +0 -370
  31. package/src/app/foundation/colors/page.tsx +0 -200
  32. package/src/app/foundation/icons/page.module.scss +0 -229
  33. package/src/app/foundation/icons/page.tsx +0 -229
  34. package/src/app/foundation/spacing/page.module.scss +0 -258
  35. package/src/app/foundation/spacing/page.tsx +0 -289
  36. package/src/app/foundation/typography/page.module.scss +0 -148
  37. package/src/app/foundation/typography/page.tsx +0 -207
  38. package/src/app/getting-started/installation/page.module.scss +0 -157
  39. package/src/app/getting-started/installation/page.tsx +0 -154
  40. package/src/app/getting-started/usage/page.module.scss +0 -209
  41. package/src/app/getting-started/usage/page.tsx +0 -242
  42. package/src/app/home.module.scss +0 -541
  43. package/src/app/layout/grid/page.module.scss +0 -178
  44. package/src/app/layout/grid/page.tsx +0 -217
  45. package/src/app/layout/responsive/page.module.scss +0 -237
  46. package/src/app/layout/responsive/page.tsx +0 -279
  47. package/src/app/layout.module.scss +0 -14
  48. package/src/app/layout.tsx +0 -30
  49. package/src/app/page.module.scss +0 -71
  50. package/src/app/page.tsx +0 -284
  51. package/src/components/CodeBlock.module.scss +0 -29
  52. package/src/components/CodeBlock.tsx +0 -18
  53. package/src/components/Navigation.module.scss +0 -104
  54. package/src/components/Navigation.tsx +0 -96
  55. package/src/components/PageHeader.module.scss +0 -24
  56. package/src/components/PageHeader.tsx +0 -17
  57. package/src/components/ThemeToggle.module.scss +0 -34
  58. package/src/components/ThemeToggle.tsx +0 -47
  59. package/src/styles/custom.scss +0 -11
  60. package/src/styles/doc-common.scss +0 -119
  61. package/src/styles/font-family.scss +0 -80
  62. package/src/styles/icon.scss +0 -5
  63. package/src/vite-env.d.ts +0 -1
  64. package/tsconfig.json +0 -26
@@ -1,289 +0,0 @@
1
- import PageHeader from '@/components/PageHeader';
2
- import styles from './page.module.scss';
3
-
4
- export default function Spacing() {
5
- const spacingValues = [
6
- { key: 0, value: '0' },
7
- { key: 1, value: '2px' },
8
- { key: 2, value: '4px' },
9
- { key: 3, value: '8px' },
10
- { key: 4, value: '12px' },
11
- { key: 5, value: '16px' },
12
- { key: 6, value: '24px' },
13
- { key: 7, value: '32px' },
14
- { key: 8, value: '40px' },
15
- { key: 9, value: '48px' },
16
- { key: 10, value: '64px' },
17
- { key: 11, value: '80px' },
18
- { key: 12, value: '96px' },
19
- { key: 13, value: '160px' },
20
- ];
21
-
22
- const radiusValues = [
23
- { key: 0, value: '0' },
24
- { key: 1, value: '2px' },
25
- { key: 2, value: '4px' },
26
- { key: 3, value: '6px' },
27
- { key: 4, value: '8px' },
28
- { key: 5, value: '12px' },
29
- { key: 6, value: '20px' },
30
- { key: 'full', value: '9999px' },
31
- ];
32
-
33
- return (
34
- <>
35
- <PageHeader
36
- title="간격"
37
- description="Podo UI의 여백과 모서리 반경 시스템을 안내합니다"
38
- />
39
-
40
- <section className={styles.section}>
41
- <h2>간격 시스템</h2>
42
- <p>
43
- Podo UI는 0부터 13까지 14단계의 여백 값을 제공합니다.
44
- 일관된 여백을 사용하여 시각적 리듬을 만들고 정돈된 레이아웃을 구성할 수 있습니다.
45
- </p>
46
- </section>
47
-
48
- <section className={styles.section}>
49
- <h2>간격 값</h2>
50
- <p>사용 가능한 모든 간격 값입니다:</p>
51
-
52
- <div className={styles.spacingGrid}>
53
- {spacingValues.map((spacing) => (
54
- <div key={spacing.key} className={styles.spacingCard}>
55
- <div className={styles.spacingInfo}>
56
- <div className={styles.spacingKey}>s({spacing.key})</div>
57
- <div className={styles.spacingValue}>{spacing.value}</div>
58
- </div>
59
- <div className={styles.spacingPreview}>
60
- <div
61
- className={styles.spacingBar}
62
- style={{ width: spacing.value }}
63
- />
64
- </div>
65
- </div>
66
- ))}
67
- </div>
68
- </section>
69
-
70
- <section className={styles.section}>
71
- <h2>SCSS에서 사용하기</h2>
72
- <p>SCSS 모듈에서 s() 함수를 사용하여 간격을 적용할 수 있습니다:</p>
73
-
74
- <div className={styles.codeBlock}>
75
- <div className={styles.codeHeader}>component.module.scss</div>
76
- <pre><code>{`@use 'podo-ui/mixin' as *;
77
-
78
- .container {
79
- // 마진
80
- margin: s(4); // 12px
81
- margin-top: s(5); // 16px
82
- margin-bottom: s(6); // 24px
83
-
84
- // 패딩
85
- padding: s(3) s(5); // 8px 16px
86
- padding-left: s(4); // 12px
87
-
88
- // 간격
89
- gap: s(3); // 8px
90
-
91
- // 여러 속성에 사용
92
- border-width: s(1); // 2px
93
- min-height: s(10); // 64px
94
- }`}</code></pre>
95
- </div>
96
- </section>
97
-
98
- <section className={styles.section}>
99
- <h2>CSS 클래스로 사용하기</h2>
100
- <p>HTML 요소에 직접 클래스를 적용할 수 있습니다:</p>
101
-
102
- <div className={styles.codeBlock}>
103
- <div className={styles.codeHeader}>HTML</div>
104
- <pre><code>{`<!-- 마진 -->
105
- <div class="m-4">Margin 12px</div>
106
- <div class="m-t-5">Margin Top 16px</div>
107
- <div class="m-b-6">Margin Bottom 24px</div>
108
- <div class="m-l-4">Margin Left 12px</div>
109
- <div class="m-r-4">Margin Right 12px</div>
110
-
111
- <!-- 패딩 -->
112
- <div class="p-4">Padding 12px</div>
113
- <div class="p-t-5">Padding Top 16px</div>
114
- <div class="p-b-6">Padding Bottom 24px</div>
115
- <div class="p-l-4">Padding Left 12px</div>
116
- <div class="p-r-4">Padding Right 12px</div>`}</code></pre>
117
- </div>
118
-
119
- <div className={styles.demo}>
120
- <div className={styles.demoTitle}>실제 예제:</div>
121
- <div className={styles.spacingDemo}>
122
- <div className="p-4" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
123
- Padding 12px (p-4)
124
- </div>
125
- <div className="p-6" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
126
- Padding 24px (p-6)
127
- </div>
128
- <div className="p-8" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
129
- Padding 40px (p-8)
130
- </div>
131
- </div>
132
- </div>
133
- </section>
134
-
135
- <section className={styles.section}>
136
- <h2>모서리 반경</h2>
137
- <p>Podo UI는 8가지 모서리 반경 값을 제공합니다. r() 함수를 사용합니다:</p>
138
-
139
- <div className={styles.radiusGrid}>
140
- {radiusValues.map((radius) => (
141
- <div key={radius.key} className={styles.radiusCard}>
142
- <div className={styles.radiusInfo}>
143
- <div className={styles.radiusKey}>r({radius.key})</div>
144
- <div className={styles.radiusValue}>{radius.value}</div>
145
- </div>
146
- <div className={styles.radiusPreview}>
147
- <div
148
- className={styles.radiusBox}
149
- style={{ borderRadius: radius.value }}
150
- />
151
- </div>
152
- </div>
153
- ))}
154
- </div>
155
- </section>
156
-
157
- <section className={styles.section}>
158
- <h2>Border Radius SCSS 사용법</h2>
159
-
160
- <div className={styles.codeBlock}>
161
- <div className={styles.codeHeader}>component.module.scss</div>
162
- <pre><code>{`@use 'podo-ui/mixin' as *;
163
-
164
- .card {
165
- border-radius: r(4); // 8px
166
- }
167
-
168
- .button {
169
- border-radius: r(2); // 4px
170
- }
171
-
172
- .avatar {
173
- border-radius: r(full); // 9999px (원형)
174
- }
175
-
176
- .input {
177
- border-radius: r(3); // 6px
178
- }
179
-
180
- .modal {
181
- border-radius: r(5); // 12px
182
- }`}</code></pre>
183
- </div>
184
- </section>
185
-
186
- <section className={styles.section}>
187
- <h2>Border Radius CSS 클래스</h2>
188
-
189
- <div className={styles.codeBlock}>
190
- <div className={styles.codeHeader}>HTML</div>
191
- <pre><code>{`<div class="r-0">No Radius</div>
192
- <div class="r-2">Radius 4px</div>
193
- <div class="r-4">Radius 8px</div>
194
- <div class="r-full">Radius Full (원형)</div>`}</code></pre>
195
- </div>
196
-
197
- <div className={styles.demo}>
198
- <div className={styles.demoTitle}>실제 예제:</div>
199
- <div className={styles.radiusDemo}>
200
- <div className="r-0 p-4" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
201
- r-0
202
- </div>
203
- <div className="r-2 p-4" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
204
- r-2 (4px)
205
- </div>
206
- <div className="r-4 p-4" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
207
- r-4 (8px)
208
- </div>
209
- <div className="r-6 p-4" style={{ background: '#f3e8ff', border: '1px solid #7c3aed' }}>
210
- r-6 (20px)
211
- </div>
212
- <div className="r-full p-4" style={{ background: '#f3e8ff', border: '1px solid #7c3aed', width: '80px', height: '80px', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
213
- r-full
214
- </div>
215
- </div>
216
- </div>
217
- </section>
218
-
219
- <section className={styles.section}>
220
- <h2>실전 예제</h2>
221
- <p>간격과 모서리 반경을 함께 사용한 카드 컴포넌트 예제:</p>
222
-
223
- <div className={styles.codeBlock}>
224
- <div className={styles.codeHeader}>component.module.scss</div>
225
- <pre><code>{`@use 'podo-ui/mixin' as *;
226
-
227
- .card {
228
- padding: s(6);
229
- margin-bottom: s(5);
230
- border-radius: r(4);
231
- background: color(bg-modal);
232
- border: 1px solid color(default-outline);
233
-
234
- .cardHeader {
235
- margin-bottom: s(4);
236
- padding-bottom: s(3);
237
- border-bottom: 1px solid color(default-outline);
238
- }
239
-
240
- .cardTitle {
241
- @include display6;
242
- margin-bottom: s(2);
243
- }
244
-
245
- .cardContent {
246
- @include p3;
247
- line-height: 1.6;
248
- }
249
-
250
- .cardFooter {
251
- margin-top: s(5);
252
- padding-top: s(4);
253
- border-top: 1px solid color(default-outline);
254
- display: flex;
255
- gap: s(3);
256
- }
257
- }`}</code></pre>
258
- </div>
259
-
260
- <div className={styles.demo}>
261
- <div className={styles.demoTitle}>실제 렌더링:</div>
262
- <div className={styles.cardExample}>
263
- <div className={styles.cardHeader}>
264
- <h3>카드 제목</h3>
265
- </div>
266
- <div className={styles.cardContent}>
267
- 이 카드는 s() 함수로 일관된 여백을 적용하고, r() 함수로 모서리를 둥글게 만들었습니다.
268
- 모든 간격이 디자인 시스템의 값을 따르고 있습니다.
269
- </div>
270
- <div className={styles.cardFooter}>
271
- <button className="primary">확인</button>
272
- <button className="default-deep">취소</button>
273
- </div>
274
- </div>
275
- </div>
276
- </section>
277
-
278
- <section className={styles.section}>
279
- <div className={styles.note}>
280
- <i className="icon-info"></i>
281
- <div>
282
- <strong>팁:</strong> 일관된 간격 시스템을 사용하면 시각적으로 안정감 있는 레이아웃을 만들 수 있습니다.
283
- 임의의 픽셀 값 대신 항상 디자인 시스템의 값을 사용하세요.
284
- </div>
285
- </div>
286
- </section>
287
- </>
288
- );
289
- }
@@ -1,148 +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);
10
- }
11
-
12
- p {
13
- @include p2;
14
- color: color(default);
15
- line-height: 1.8;
16
- margin: 0 0 s(5) 0;
17
- }
18
- }
19
-
20
- .codeBlock {
21
- background: color(bg-modal);
22
- border: 1px solid color(default-outline);
23
- border-radius: r(3);
24
- overflow: hidden;
25
- margin-bottom: s(4);
26
-
27
- .codeHeader {
28
- padding: s(3) s(5);
29
- background: color(bg-elevation-1);
30
- border-bottom: 1px solid color(default-outline);
31
- @include p4;
32
- font-weight: 600;
33
- color: color(default-deep);
34
- }
35
-
36
- pre {
37
- margin: 0;
38
- padding: s(5);
39
- overflow-x: auto;
40
- background: color(bg-elevation);
41
-
42
- code {
43
- @include p3;
44
- font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
45
- color: color(default-deep);
46
- white-space: pre;
47
- }
48
- }
49
- }
50
-
51
- .note {
52
- display: flex;
53
- gap: s(4);
54
- padding: s(5);
55
- border-radius: r(4);
56
- margin-bottom: s(5);
57
- background: color(info-fill);
58
- border: 1px solid color(info-outline);
59
- color: color(info);
60
-
61
- > i {
62
- font-size: 20px;
63
- flex-shrink: 0;
64
- color: color(info);
65
- }
66
-
67
- strong {
68
- display: block;
69
- margin-bottom: s(2);
70
- }
71
- }
72
-
73
- .typeGrid {
74
- display: grid;
75
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
76
- gap: s(5);
77
- margin-top: s(6);
78
- }
79
-
80
- .typeCard {
81
- border: 1px solid color(default-outline);
82
- border-radius: r(4);
83
- overflow: hidden;
84
- transition: all 0.3s;
85
-
86
- &:hover {
87
- border-color: color(primary);
88
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
89
- }
90
- }
91
-
92
- .typePreview {
93
- padding: s(6);
94
- background: color(bg-elevation-1);
95
- border-bottom: 1px solid color(default-outline);
96
- min-height: 120px;
97
- display: flex;
98
- align-items: center;
99
- justify-content: center;
100
-
101
- > div {
102
- color: color(default-deep);
103
- }
104
- }
105
-
106
- .typeInfo {
107
- padding: s(5);
108
-
109
- h3 {
110
- @include p2;
111
- font-weight: 600;
112
- margin: 0 0 s(3) 0;
113
- color: color(primary);
114
- font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
115
- }
116
- }
117
-
118
- .typeSpecs {
119
- @include p4;
120
- color: color(default);
121
-
122
- > div {
123
- margin-bottom: s(2);
124
-
125
- &:last-child {
126
- margin-bottom: 0;
127
- }
128
-
129
- strong {
130
- font-weight: 600;
131
- color: color(default-deep);
132
- }
133
- }
134
- }
135
-
136
- .demo {
137
- margin-top: s(5);
138
- padding: s(5);
139
- background: color(bg-modal);
140
- border: 1px solid color(default-outline);
141
- border-radius: r(4);
142
- }
143
-
144
- .demoTitle {
145
- @include p3-semibold;
146
- margin-bottom: s(4);
147
- color: color(default-deep);
148
- }
@@ -1,207 +0,0 @@
1
- import PageHeader from '@/components/PageHeader';
2
- import styles from './page.module.scss';
3
-
4
- export default function Typography() {
5
- const displayStyles = [
6
- { name: 'display1', fontSize: '60px', fontWeight: 600, lineHeight: 1.2, mobile: '36px' },
7
- { name: 'display2', fontSize: '54px', fontWeight: 600, lineHeight: 1.2, mobile: '32px' },
8
- { name: 'display3', fontSize: '48px', fontWeight: 600, lineHeight: 1.2, mobile: '28px' },
9
- { name: 'display4', fontSize: '42px', fontWeight: 600, lineHeight: 1.2, mobile: '24px' },
10
- { name: 'display5', fontSize: '36px', fontWeight: 600, lineHeight: 1.2, mobile: '20px' },
11
- { name: 'display6', fontSize: '24px', fontWeight: 600, lineHeight: 1.4, mobile: '18px' },
12
- { name: 'display7', fontSize: '20px', fontWeight: 600, lineHeight: 1.6, mobile: '16px' },
13
- ];
14
-
15
- const paragraphStyles = [
16
- { name: 'p1', fontSize: '24px', fontWeight: 400, lineHeight: 1.4, mobile: '20px' },
17
- { name: 'p2', fontSize: '20px', fontWeight: 400, lineHeight: 1.6, mobile: '16px' },
18
- { name: 'p3', fontSize: '16px', fontWeight: 400, lineHeight: 1.6, mobile: '14px' },
19
- { name: 'p3-semibold', fontSize: '16px', fontWeight: 600, lineHeight: 1.6, mobile: '14px' },
20
- { name: 'p4', fontSize: '14px', fontWeight: 400, lineHeight: 1.6, mobile: '12px' },
21
- { name: 'p4-semibold', fontSize: '14px', fontWeight: 600, lineHeight: 1.6, mobile: '12px' },
22
- { name: 'p5', fontSize: '12px', fontWeight: 400, lineHeight: 1.6, mobile: '12px' },
23
- { name: 'p5-semibold', fontSize: '12px', fontWeight: 600, lineHeight: 1.6, mobile: '12px' },
24
- ];
25
-
26
- const headingStyles = [
27
- { name: 'h1', fontSize: '54px', fontWeight: 600, lineHeight: 1.2, mobile: '24px' },
28
- { name: 'h2', fontSize: '42px', fontWeight: 600, lineHeight: 1.2, mobile: '18px' },
29
- { name: 'h3', fontSize: '36px', fontWeight: 600, lineHeight: 1.2, mobile: '16px' },
30
- ];
31
-
32
- return (
33
- <>
34
- <PageHeader
35
- title="타이포그래피"
36
- description="Podo UI의 타이포그래피 시스템과 사용법을 안내합니다"
37
- />
38
-
39
- <section className={styles.section}>
40
- <h2>타이포그래피 시스템</h2>
41
- <p>
42
- Podo UI는 Display, Paragraph, Heading 스타일을 제공하며, 각 스타일은 모바일 환경에 맞춰 자동으로 조정됩니다.
43
- Pretendard 폰트를 기본으로 사용합니다.
44
- </p>
45
- </section>
46
-
47
- <section className={styles.section}>
48
- <h2>Display 스타일</h2>
49
- <p>대형 제목과 히어로 섹션에 사용되는 Display 스타일입니다.</p>
50
-
51
- <div className={styles.typeGrid}>
52
- {displayStyles.map((style) => (
53
- <div key={style.name} className={styles.typeCard}>
54
- <div className={styles.typePreview}>
55
- <div className={style.name}>타이포그래피</div>
56
- </div>
57
- <div className={styles.typeInfo}>
58
- <h3>{style.name}</h3>
59
- <div className={styles.typeSpecs}>
60
- <div><strong>Size:</strong> {style.fontSize} (Mobile: {style.mobile})</div>
61
- <div><strong>Weight:</strong> {style.fontWeight}</div>
62
- <div><strong>Line Height:</strong> {style.lineHeight}</div>
63
- </div>
64
- </div>
65
- </div>
66
- ))}
67
- </div>
68
- </section>
69
-
70
- <section className={styles.section}>
71
- <h2>Paragraph 스타일</h2>
72
- <p>본문과 설명 텍스트에 사용되는 Paragraph 스타일입니다.</p>
73
-
74
- <div className={styles.typeGrid}>
75
- {paragraphStyles.map((style) => (
76
- <div key={style.name} className={styles.typeCard}>
77
- <div className={styles.typePreview}>
78
- <div className={style.name}>
79
- 본문 텍스트는 읽기 쉽고 명확해야 합니다.
80
- </div>
81
- </div>
82
- <div className={styles.typeInfo}>
83
- <h3>{style.name}</h3>
84
- <div className={styles.typeSpecs}>
85
- <div><strong>Size:</strong> {style.fontSize} (Mobile: {style.mobile})</div>
86
- <div><strong>Weight:</strong> {style.fontWeight}</div>
87
- <div><strong>Line Height:</strong> {style.lineHeight}</div>
88
- </div>
89
- </div>
90
- </div>
91
- ))}
92
- </div>
93
- </section>
94
-
95
- <section className={styles.section}>
96
- <h2>Heading 스타일</h2>
97
- <p>기본 HTML 태그에 자동으로 적용되는 스타일입니다.</p>
98
-
99
- <div className={styles.typeGrid}>
100
- {headingStyles.map((style) => (
101
- <div key={style.name} className={styles.typeCard}>
102
- <div className={styles.typePreview}>
103
- {style.name === 'h1' && <h1>Heading 1</h1>}
104
- {style.name === 'h2' && <h2>Heading 2</h2>}
105
- {style.name === 'h3' && <h3>Heading 3</h3>}
106
- </div>
107
- <div className={styles.typeInfo}>
108
- <h3>{style.name}</h3>
109
- <div className={styles.typeSpecs}>
110
- <div><strong>Size:</strong> {style.fontSize} (Mobile: {style.mobile})</div>
111
- <div><strong>Weight:</strong> {style.fontWeight}</div>
112
- <div><strong>Line Height:</strong> {style.lineHeight}</div>
113
- </div>
114
- </div>
115
- </div>
116
- ))}
117
- </div>
118
- </section>
119
-
120
- <section className={styles.section}>
121
- <h2>CSS 클래스로 사용하기</h2>
122
- <p>HTML 요소에 직접 타이포그래피 클래스를 적용할 수 있습니다:</p>
123
-
124
- <div className={styles.codeBlock}>
125
- <div className={styles.codeHeader}>HTML</div>
126
- <pre><code>{`<!-- Display 스타일 -->
127
- <div class="display1">대형 제목</div>
128
- <div class="display4">중형 제목</div>
129
- <div class="display7">소형 제목</div>
130
-
131
- <!-- Paragraph 스타일 -->
132
- <p class="p1">큰 본문 텍스트</p>
133
- <p class="p3">일반 본문 텍스트</p>
134
- <p class="p3-semibold">강조된 본문 텍스트</p>
135
- <p class="p5">작은 본문 텍스트</p>`}</code></pre>
136
- </div>
137
-
138
- <div className={styles.demo}>
139
- <div className={styles.demoTitle}>실제 예제:</div>
140
- <div className="display4" style={{ marginBottom: '16px' }}>Display 4 제목</div>
141
- <div className="p2" style={{ marginBottom: '12px' }}>P2 크기의 본문 텍스트입니다.</div>
142
- <div className="p3">P3 크기의 본문 텍스트입니다.</div>
143
- <div className="p3-semibold">P3 Semibold 강조된 텍스트입니다.</div>
144
- </div>
145
- </section>
146
-
147
- <section className={styles.section}>
148
- <h2>SCSS에서 사용하기</h2>
149
- <p>SCSS 모듈에서 믹스인을 사용하여 타이포그래피를 적용할 수 있습니다:</p>
150
-
151
- <div className={styles.codeBlock}>
152
- <div className={styles.codeHeader}>component.module.scss</div>
153
- <pre><code>{`@use 'podo-ui/mixin' as *;
154
-
155
- .title {
156
- @include display3;
157
- margin-bottom: s(5);
158
- }
159
-
160
- .subtitle {
161
- @include display6;
162
- color: color(default-deep);
163
- }
164
-
165
- .body {
166
- @include p3;
167
- line-height: 1.8;
168
- }
169
-
170
- .caption {
171
- @include p5;
172
- color: color(default);
173
- }`}</code></pre>
174
- </div>
175
- </section>
176
-
177
- <section className={styles.section}>
178
- <h2>폰트 패밀리</h2>
179
- <p>기본 폰트로 Pretendard를 사용하며, CSS 변수로 커스터마이징이 가능합니다:</p>
180
-
181
- <div className={styles.codeBlock}>
182
- <div className={styles.codeHeader}>CSS</div>
183
- <pre><code>{`:root {
184
- --base-font-family: 'Pretendard', sans-serif;
185
- }
186
-
187
- /* 커스텀 폰트 사용 */
188
- :root {
189
- --base-font-family: 'Your Custom Font', -apple-system, sans-serif;
190
- }`}</code></pre>
191
- </div>
192
- </section>
193
-
194
- <section className={styles.section}>
195
- <h2>반응형</h2>
196
- <p>모든 타이포그래피 스타일은 모바일 환경에 맞춰 자동으로 크기가 조정됩니다.</p>
197
-
198
- <div className={styles.note}>
199
- <i className="icon-info"></i>
200
- <div>
201
- <strong>팁:</strong> 모바일 브레이크포인트는 768px 이하입니다. 창 크기를 조정하여 타이포그래피 변화를 확인해보세요.
202
- </div>
203
- </div>
204
- </section>
205
- </>
206
- );
207
- }