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,225 +0,0 @@
1
- import PageHeader from '@/components/PageHeader';
2
- import styles from './page.module.scss';
3
-
4
- export default function Select() {
5
- return (
6
- <>
7
- <PageHeader
8
- title="선택"
9
- description="Podo UI의 Select 컴포넌트와 사용법을 안내합니다"
10
- />
11
-
12
- <section className={styles.section}>
13
- <h2>기본 사용법</h2>
14
- <p>
15
- HTML select 태그를 사용하여 드롭다운 선택 메뉴를 만들 수 있습니다.
16
- Podo UI는 커스텀 화살표 아이콘과 스타일을 자동으로 적용합니다.
17
- </p>
18
-
19
- <div className={styles.codeBlock}>
20
- <div className={styles.codeHeader}>HTML</div>
21
- <pre><code>{`<select>
22
- <option value="" disabled selected>선택하세요</option>
23
- <option value="1">옵션 1</option>
24
- <option value="2">옵션 2</option>
25
- <option value="3">옵션 3</option>
26
- </select>`}</code></pre>
27
- </div>
28
-
29
- <div className={styles.demo}>
30
- <div className={styles.demoTitle}>실제 예제:</div>
31
- <div className={styles.selectGroup}>
32
- <select>
33
- <option value="" disabled selected>선택하세요</option>
34
- <option value="1">옵션 1</option>
35
- <option value="2">옵션 2</option>
36
- <option value="3">옵션 3</option>
37
- </select>
38
- <select defaultValue="2">
39
- <option value="1">서울</option>
40
- <option value="2">부산</option>
41
- <option value="3">대구</option>
42
- <option value="4">인천</option>
43
- </select>
44
- <select disabled>
45
- <option>비활성화</option>
46
- </select>
47
- </div>
48
- </div>
49
- </section>
50
-
51
- <section className={styles.section}>
52
- <h2>Placeholder 스타일</h2>
53
- <p>
54
- 첫 번째 option에 <code>value=""</code>, <code>disabled</code>, <code>selected</code> 속성을 함께 사용하면
55
- placeholder처럼 보이며, 선택 후 자동으로 숨겨집니다.
56
- </p>
57
-
58
- <div className={styles.codeBlock}>
59
- <div className={styles.codeHeader}>HTML</div>
60
- <pre><code>{`<select>
61
- <option value="" disabled selected>카테고리를 선택하세요</option>
62
- <option value="electronics">전자제품</option>
63
- <option value="fashion">패션</option>
64
- <option value="food">식품</option>
65
- </select>`}</code></pre>
66
- </div>
67
-
68
- <div className={styles.demo}>
69
- <div className={styles.demoTitle}>실제 예제:</div>
70
- <div className={styles.selectGroup}>
71
- <select>
72
- <option value="" disabled selected>카테고리를 선택하세요</option>
73
- <option value="electronics">전자제품</option>
74
- <option value="fashion">패션</option>
75
- <option value="food">식품</option>
76
- </select>
77
- </div>
78
- </div>
79
- </section>
80
-
81
- <section className={styles.section}>
82
- <h2>아이콘과 함께 사용</h2>
83
- <p>
84
- <code>.with-icon</code> 클래스로 감싸면 왼쪽에 아이콘을 추가할 수 있습니다.
85
- </p>
86
-
87
- <div className={styles.codeBlock}>
88
- <div className={styles.codeHeader}>HTML</div>
89
- <pre><code>{`<div class="with-icon">
90
- <i class="icon-user"></i>
91
- <select>
92
- <option value="" disabled selected>사용자 선택</option>
93
- <option value="admin">관리자</option>
94
- <option value="user">일반 사용자</option>
95
- <option value="guest">게스트</option>
96
- </select>
97
- </div>
98
-
99
- <div class="with-icon">
100
- <i class="icon-globe"></i>
101
- <select>
102
- <option value="" disabled selected>언어 선택</option>
103
- <option value="ko">한국어</option>
104
- <option value="en">English</option>
105
- <option value="ja">日本語</option>
106
- </select>
107
- </div>`}</code></pre>
108
- </div>
109
-
110
- <div className={styles.demo}>
111
- <div className={styles.demoTitle}>실제 예제:</div>
112
- <div className={styles.selectGroup}>
113
- <div className="with-icon">
114
- <i className="icon-user"></i>
115
- <select>
116
- <option value="" disabled selected>사용자 선택</option>
117
- <option value="admin">관리자</option>
118
- <option value="user">일반 사용자</option>
119
- <option value="guest">게스트</option>
120
- </select>
121
- </div>
122
- <div className="with-icon">
123
- <i className="icon-globe"></i>
124
- <select>
125
- <option value="" disabled selected>언어 선택</option>
126
- <option value="ko">한국어</option>
127
- <option value="en">English</option>
128
- <option value="ja">日本語</option>
129
- </select>
130
- </div>
131
- </div>
132
- </div>
133
- </section>
134
-
135
- <section className={styles.section}>
136
- <h2>Select 상태</h2>
137
- <p>다양한 상태의 select를 사용할 수 있습니다:</p>
138
-
139
- <div className={styles.demo}>
140
- <div className={styles.demoTitle}>실제 예제:</div>
141
- <div className={styles.selectGroup}>
142
- <div>
143
- <label className={styles.label}>기본</label>
144
- <select>
145
- <option value="" disabled selected>옵션 선택</option>
146
- <option value="1">옵션 1</option>
147
- <option value="2">옵션 2</option>
148
- </select>
149
- </div>
150
- <div>
151
- <label className={styles.label}>비활성화</label>
152
- <select disabled>
153
- <option>비활성화된 select</option>
154
- </select>
155
- </div>
156
- <div>
157
- <label className={styles.label}>다중 선택</label>
158
- <select multiple size={4}>
159
- <option value="1">옵션 1</option>
160
- <option value="2">옵션 2</option>
161
- <option value="3">옵션 3</option>
162
- <option value="4">옵션 4</option>
163
- </select>
164
- </div>
165
- </div>
166
- </div>
167
- </section>
168
-
169
- <section className={styles.section}>
170
- <h2>SCSS에서 사용하기</h2>
171
- <p>SCSS 모듈에서 select 스타일을 커스터마이징할 수 있습니다:</p>
172
-
173
- <div className={styles.codeBlock}>
174
- <div className={styles.codeHeader}>component.module.scss</div>
175
- <pre><code>{`@use 'podo-ui/mixin' as *;
176
-
177
- .customSelect {
178
- padding: s(3) s(7) s(3) s(5);
179
- border: 1px solid color(border);
180
- border-radius: r(3);
181
- background: color(bg-block);
182
- color: color(default-deep-base);
183
- outline: none;
184
- appearance: none;
185
- cursor: pointer;
186
-
187
- // 커스텀 화살표 (자동 포함됨)
188
- background-image: url('data:image/svg+xml,...');
189
- background-repeat: no-repeat;
190
- background-position: right 11px center;
191
-
192
- &:focus-visible:not(:disabled) {
193
- outline: 4px solid color(primary-outline);
194
- }
195
-
196
- &:disabled {
197
- color: color(text-action-disabled);
198
- background-color: color(bg-disabled);
199
- cursor: not-allowed;
200
- }
201
- }
202
-
203
- // 아이콘과 함께 사용
204
- .withIcon {
205
- position: relative;
206
- display: inline-block;
207
-
208
- > i {
209
- position: absolute;
210
- left: s(3);
211
- top: 50%;
212
- transform: translateY(-50%);
213
- color: color(text-action);
214
- pointer-events: none;
215
- }
216
-
217
- > select {
218
- padding-left: s(8);
219
- }
220
- }`}</code></pre>
221
- </div>
222
- </section>
223
- </>
224
- );
225
- }
@@ -1,81 +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
- p {
13
- @include p2;
14
- color: color(default-base);
15
- line-height: 1.8;
16
- margin: 0 0 s(5) 0;
17
- }
18
- }
19
-
20
- .codeBlock {
21
- background: color(default-deep-base);
22
- border-radius: r(4);
23
- overflow: hidden;
24
- margin-bottom: s(4);
25
-
26
- .codeHeader {
27
- padding: s(3) s(5);
28
- background: rgba(0, 0, 0, 0.2);
29
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
30
- @include p4-semibold;
31
- color: rgba(255, 255, 255, 0.7);
32
- }
33
-
34
- pre {
35
- margin: 0;
36
- padding: s(5);
37
- overflow-x: auto;
38
-
39
- code {
40
- @include p3;
41
- font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
42
- color: #f8f8f2;
43
- white-space: pre;
44
- }
45
- }
46
- }
47
-
48
- .demo {
49
- margin-top: s(5);
50
- padding: s(5);
51
- background: color(default-fill);
52
- border: 1px solid color(default-outline);
53
- border-radius: r(4);
54
- }
55
-
56
- .demoTitle {
57
- @include p3-semibold;
58
- margin-bottom: s(4);
59
- color: color(default-deep-base);
60
- }
61
-
62
- .textareaGroup {
63
- display: flex;
64
- flex-direction: column;
65
- gap: s(4);
66
-
67
- textarea {
68
- width: 100%;
69
- }
70
-
71
- > div {
72
- display: flex;
73
- flex-direction: column;
74
- gap: s(2);
75
- }
76
- }
77
-
78
- .label {
79
- @include p3-semibold;
80
- color: color(default-deep-base);
81
- }
@@ -1,103 +0,0 @@
1
- import PageHeader from '@/components/PageHeader';
2
- import styles from './page.module.scss';
3
-
4
- export default function Textarea() {
5
- return (
6
- <>
7
- <PageHeader
8
- title="텍스트 영역"
9
- description="Podo UI의 Textarea 컴포넌트와 사용법을 안내합니다"
10
- />
11
-
12
- <section className={styles.section}>
13
- <h2>기본 사용법</h2>
14
- <p>
15
- HTML textarea 태그를 사용하여 여러 줄의 텍스트를 입력할 수 있습니다.
16
- </p>
17
-
18
- <div className={styles.codeBlock}>
19
- <div className={styles.codeHeader}>HTML</div>
20
- <pre><code>{`<textarea placeholder="내용을 입력하세요"></textarea>
21
- <textarea placeholder="내용을 입력하세요" rows="5"></textarea>
22
- <textarea placeholder="비활성화" disabled></textarea>`}</code></pre>
23
- </div>
24
-
25
- <div className={styles.demo}>
26
- <div className={styles.demoTitle}>실제 예제:</div>
27
- <div className={styles.textareaGroup}>
28
- <textarea placeholder="내용을 입력하세요"></textarea>
29
- <textarea placeholder="내용을 입력하세요" rows={5}></textarea>
30
- <textarea placeholder="비활성화" disabled></textarea>
31
- </div>
32
- </div>
33
- </section>
34
-
35
- <section className={styles.section}>
36
- <h2>Textarea 속성</h2>
37
- <p>다양한 속성으로 textarea를 제어할 수 있습니다:</p>
38
-
39
- <div className={styles.demo}>
40
- <div className={styles.demoTitle}>실제 예제:</div>
41
- <div className={styles.textareaGroup}>
42
- <div>
43
- <label className={styles.label}>기본 (3줄)</label>
44
- <textarea rows={3} placeholder="기본 textarea"></textarea>
45
- </div>
46
- <div>
47
- <label className={styles.label}>고정 크기 (resize 방지)</label>
48
- <textarea rows={4} style={{ resize: 'none' }} placeholder="크기 고정"></textarea>
49
- </div>
50
- <div>
51
- <label className={styles.label}>최대 길이 제한 (100자)</label>
52
- <textarea rows={4} maxLength={100} placeholder="최대 100자까지 입력 가능"></textarea>
53
- </div>
54
- <div>
55
- <label className={styles.label}>읽기 전용</label>
56
- <textarea rows={3} readOnly value="읽기 전용 텍스트입니다."></textarea>
57
- </div>
58
- </div>
59
- </div>
60
- </section>
61
-
62
- <section className={styles.section}>
63
- <h2>SCSS에서 사용하기</h2>
64
- <p>SCSS 모듈에서 textarea 스타일을 커스터마이징할 수 있습니다:</p>
65
-
66
- <div className={styles.codeBlock}>
67
- <div className={styles.codeHeader}>component.module.scss</div>
68
- <pre><code>{`@use 'podo-ui/mixin' as *;
69
-
70
- .customTextarea {
71
- width: 100%;
72
- min-height: 120px;
73
- padding: s(4);
74
- border: 1px solid color(default-outline);
75
- border-radius: r(3);
76
- background: color(bg-modal);
77
- color: color(default-deep-base);
78
- font-family: inherit;
79
- font-size: 14px;
80
- line-height: 1.6;
81
- resize: vertical;
82
- transition: all 0.3s;
83
-
84
- &:focus {
85
- border-color: color(primary-base);
86
- outline: none;
87
- box-shadow: 0 0 0 3px color(primary-fill);
88
- }
89
-
90
- &:disabled {
91
- opacity: 0.5;
92
- cursor: not-allowed;
93
- }
94
-
95
- &::placeholder {
96
- color: color(default-base);
97
- }
98
- }`}</code></pre>
99
- </div>
100
- </section>
101
- </>
102
- );
103
- }