@apt.today/react-seoul-icons 1.1.0 → 1.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/README.md CHANGED
@@ -10,29 +10,7 @@
10
10
 
11
11
  대한민국 광역자치단체(시/도) 및 기초자치단체(시/군/구) 로고 아이콘을 React 컴포넌트로 제공하는 라이브러리입니다.
12
12
 
13
- 🌐 [데모 페이지](https://myriky.github.io/apt-today-react-seoul-icons/)
14
-
15
- ## 지원 행정구역
16
-
17
- ### 시도 (광역시/도)
18
-
19
- | 시도 | 코드 | 컴포넌트명 |
20
- | ---------- | ---- | ---------- |
21
- | 서울특별시 | `11` | `Seoul` |
22
- | 부산광역시 | `26` | `Busan` |
23
- | 대구광역시 | `27` | `Daegu` |
24
- | 인천광역시 | `28` | `Incheon` |
25
- | 울산광역시 | `31` | `Ulsan` |
26
- | 경기도 | `41` | `Gyeonggi` |
27
-
28
- ### 시군구
29
-
30
- - **서울특별시**: 25개 자치구 (강남구, 종로구, 마포구 등)
31
- - **경기도**: 13개 시 (수원시, 고양시, 용인시, 화성시, 성남시, 안양시, 광명시, 과천시, 구리시, 남양주시, 하남시, 의왕시, 김포시)
32
- - **부산광역시**: 해운대구
33
- - **대구광역시**: 수성구
34
- - **인천광역시**: 연수구
35
- - **울산광역시**: 남구
13
+ [데모 페이지](https://myriky.github.io/apt-today-react-seoul-icons/)
36
14
 
37
15
  ## 설치
38
16
 
@@ -40,410 +18,202 @@
40
18
  npm install @apt.today/react-seoul-icons
41
19
  ```
42
20
 
43
- 또는
44
-
45
21
  ```bash
46
22
  yarn add @apt.today/react-seoul-icons
47
23
  ```
48
24
 
49
25
  ## 사용법
50
26
 
51
- ### 개별 컴포넌트 Import
27
+ ### 컴포넌트 직접 사용
28
+
29
+ 아이콘을 직접 import해서 React 컴포넌트로 사용합니다.
52
30
 
53
31
  ```tsx
54
- import {
55
- Seoul,
56
- GangnamGu,
57
- JongnoGu,
58
- MapoGu,
59
- } from "@apt.today/react-seoul-icons";
32
+ import { GangnamGu, Seoul, MapoGu } from "@apt.today/react-seoul-icons";
60
33
 
61
34
  function App() {
62
35
  return (
63
36
  <div>
64
37
  <Seoul width={64} height={64} />
65
38
  <GangnamGu className="w-12 h-12" />
66
- <JongnoGu style={{ width: 48, height: 48 }} />
67
- <MapoGu width={48} height={48} />
39
+ <MapoGu style={{ width: 48, height: 48 }} />
68
40
  </div>
69
41
  );
70
42
  }
71
43
  ```
72
44
 
73
- ### 시도 아이콘 사용
45
+ ### 유틸리티로 동적 조회
74
46
 
75
- ```tsx
76
- import {
77
- Seoul,
78
- Busan,
79
- Incheon,
80
- Gyeonggi,
81
- getSidoIcon,
82
- } from "@apt.today/react-seoul-icons";
83
-
84
- function App() {
85
- // 직접 Import
86
- return <Seoul width={64} height={64} />;
87
-
88
- // 또는 코드로 가져오기
89
- const SeoulIcon = getSidoIcon(11);
90
- return SeoulIcon && <SeoulIcon width={64} height={64} />;
91
- }
92
- ```
93
-
94
- ### 시군구 아이콘 사용
47
+ 코드나 이름으로 아이콘을 동적으로 가져올 때는 `utils`를 사용합니다.
95
48
 
96
49
  ```tsx
97
- import { getSigunguIcon, getSigunguBySido } from "@apt.today/react-seoul-icons";
50
+ import { utils } from "@apt.today/react-seoul-icons";
98
51
 
99
- function App() {
100
- // 코드로 시군구 아이콘 가져오기
101
- const GangnamIcon = getSigunguIcon(11680);
52
+ // 코드로 아이콘 가져오기 (시도 2자리 / 시군구 5자리 자동 판별)
53
+ const SeoulIcon = utils.getIcon(11); // 서울특별시
54
+ const GangnamIcon = utils.getIcon(11680); // 강남구
102
55
 
103
- // 시도별 시군구 목록 가져오기
104
- const seoulDistricts = getSigunguBySido(11);
105
- const gyeonggiCities = getSigunguBySido(41);
56
+ // 이름으로 아이콘 검색
57
+ const Icon = utils.findByName("강남구");
58
+ const Icon2 = utils.findByName("강남");
59
+ const Icon3 = utils.findByName("서울특별시 강남구");
60
+ const Icon4 = utils.findByName("서울 강남구");
106
61
 
107
- return (
108
- <div>
109
- {GangnamIcon && <GangnamIcon width={48} height={48} />}
110
- {seoulDistricts.map((d) => (
111
- <d.component key={d.code} width={32} height={32} />
112
- ))}
113
- </div>
114
- );
115
- }
62
+ // 중복 이름(중구 등)은 region 옵션으로 구분
63
+ const JungGu = utils.findByName("중구", { region: "서울" });
116
64
  ```
117
65
 
118
- ### 전체 Import (네임스페이스)
66
+ ### 지역별 목록 조회
119
67
 
120
68
  ```tsx
121
- import * as SeoulIcons from "@apt.today/react-seoul-icons";
122
-
123
- function App() {
124
- return (
125
- <div>
126
- <SeoulIcons.Seoul width={64} />
127
- <SeoulIcons.GangnamGu width={48} />
128
- <SeoulIcons.JongnoGu className="w-12 h-12" />
129
- </div>
130
- );
131
- }
132
- ```
69
+ import { utils } from "@apt.today/react-seoul-icons";
133
70
 
134
- ### 동적 아이콘 렌더링 (컴포넌트 이름 기반)
71
+ // 시도별 시군구 목록
72
+ const seoulIcons = utils.getByRegion(11); // 코드로
73
+ const gyeonggiIcons = utils.getByRegion("경기"); // 이름으로
135
74
 
136
- ```tsx
137
- import * as SeoulIcons from "@apt.today/react-seoul-icons";
75
+ // 전체 시도 목록
76
+ const regions = utils.getAllRegions();
138
77
 
139
- const districts = ["GangnamGu", "MapoGu", "JongnoGu"];
78
+ // 전체 시군구 목록
79
+ const allIcons = utils.getAll();
140
80
 
141
- function App() {
81
+ function DistrictList() {
142
82
  return (
143
- <div className="flex gap-4">
144
- {districts.map((name) => {
145
- const Icon = SeoulIcons[name as keyof typeof SeoulIcons] as React.FC<
146
- React.SVGProps<SVGSVGElement>
147
- >;
148
- return <Icon key={name} width={48} height={48} />;
149
- })}
83
+ <div className="grid grid-cols-5 gap-4">
84
+ {seoulIcons.map((icon) => (
85
+ <div key={icon.code} className="flex flex-col items-center">
86
+ <icon.component className="w-12 h-12" />
87
+ <span>{icon.name}</span>
88
+ </div>
89
+ ))}
150
90
  </div>
151
91
  );
152
92
  }
153
93
  ```
154
94
 
155
- ### 행정구역 코드로 아이콘 가져오기 ⭐
95
+ ### API 응답에서 동적으로 사용
156
96
 
157
97
  ```tsx
158
- import { getSidoIcon, getSigunguIcon } from "@apt.today/react-seoul-icons";
159
-
160
- function App() {
161
- // 시도 아이콘
162
- const SeoulIcon = getSidoIcon(11);
163
- const BusanIcon = getSidoIcon(26);
98
+ import { utils } from "@apt.today/react-seoul-icons";
164
99
 
165
- // 시군구 아이콘
166
- const GangnamIcon = getSigunguIcon(11680);
167
- const HaeundaeIcon = getSigunguIcon(26350);
100
+ // 행정구역 코드를 받은 경우
101
+ function DistrictIcon({ code }: { code: number }) {
102
+ const Icon = utils.getIcon(code);
103
+ if (!Icon) return null;
104
+ return <Icon width={48} height={48} />;
105
+ }
168
106
 
169
- return (
170
- <div>
171
- {SeoulIcon && <SeoulIcon width={64} height={64} />}
172
- {GangnamIcon && <GangnamIcon width={48} height={48} />}
173
- </div>
174
- );
107
+ // 지역명을 받은 경우
108
+ function DistrictIconByName({ name }: { name: string }) {
109
+ const Icon = utils.findByName(name);
110
+ if (!Icon) return null;
111
+ return <Icon width={48} height={48} />;
175
112
  }
176
113
  ```
177
114
 
178
- ### 이름으로 아이콘 가져오기
179
-
180
- ```tsx
181
- import { getSigunguIconByName } from "@apt.today/react-seoul-icons";
115
+ ## API
182
116
 
183
- // 다양한 형식 지원
184
- const Icon1 = getSigunguIconByName("강남구"); // ✅
185
- const Icon2 = getSigunguIconByName("강남"); // ✅
186
- const Icon3 = getSigunguIconByName("서울특별시 강남구"); // ✅
117
+ ### 아이콘 컴포넌트
187
118
 
188
- // 중복되는 이름(남구 등)은 sidoCode 옵션 필요
189
- const UlsanNam = getSigunguIconByName("남구", { sidoCode: 31 }); // ✅ 울산 남구
190
- ```
191
-
192
- ### 모든 지역 정보 가져오기
119
+ 모든 아이콘 컴포넌트는 `React.SVGProps<SVGSVGElement>`를 지원합니다.
193
120
 
194
121
  ```tsx
195
- import {
196
- getAllSidoInfo,
197
- getAllSigunguInfo,
198
- getSigunguBySido,
199
- } from "@apt.today/react-seoul-icons";
200
-
201
- // 모든 시도 정보
202
- const allSido = getAllSidoInfo();
203
-
204
- // 모든 시군구 정보
205
- const allSigungu = getAllSigunguInfo();
206
-
207
- // 특정 시도의 시군구만 가져오기
208
- const seoulDistricts = getSigunguBySido(11);
209
- const gyeonggiCities = getSigunguBySido(41);
210
-
211
- function App() {
212
- return (
213
- <div>
214
- {seoulDistricts.map((district) => (
215
- <div key={district.code}>
216
- <district.component width={48} height={48} />
217
- <span>{district.name}</span>
218
- <code>{district.code}</code>
219
- </div>
220
- ))}
221
- </div>
222
- );
223
- }
122
+ <GangnamGu width={48} height={48} />
123
+ <GangnamGu className="w-12 h-12" />
124
+ <GangnamGu style={{ width: 48 }} />
224
125
  ```
225
126
 
226
- ## API 레퍼런스
227
-
228
- ### 시도 관련 함수
229
-
230
- | 함수 | 설명 | 반환 타입 |
231
- | ------------------- | --------------------------- | ----------------------- |
232
- | `getSidoIcon(code)` | 시도 코드로 아이콘 가져오기 | `Component \| null` |
233
- | `getSidoInfo(code)` | 시도 코드로 정보 가져오기 | `SidoInfo \| undefined` |
234
- | `getAllSidoInfo()` | 모든 시도 정보 가져오기 | `SidoInfo[]` |
127
+ ### utils
235
128
 
236
- ### 시군구 관련 함수
237
-
238
- | 함수 | 설명 | 반환 타입 |
239
- | -------------------------------------- | ------------------------------- | -------------------------- |
240
- | `getSigunguIcon(code)` | 시군구 코드로 아이콘 가져오기 | `Component \| null` |
241
- | `getSigunguInfo(code)` | 시군구 코드로 정보 가져오기 | `SigunguInfo \| undefined` |
242
- | `getSigunguBySido(sidoCode)` | 특정 시도의 시군구 목록 | `SigunguInfo[]` |
243
- | `getSigunguIconByName(name, options?)` | 이름으로 시군구 아이콘 가져오기 | `Component \| null` |
244
- | `getAllSigunguInfo()` | 모든 시군구 정보 가져오기 | `SigunguInfo[]` |
245
-
246
- ### 기존 호환 함수 (Deprecated)
247
-
248
- | 함수 | 설명 | 반환 타입 |
249
- | ------------------------------- | ------------------------------- | --------------------------- |
250
- | `getIconByCode(code)` | 행정구역 코드로 아이콘 가져오기 | `Component \| undefined` |
251
- | `getIconByName(name, options?)` | 이름으로 아이콘 가져오기 | `Component \| undefined` |
252
- | `getDistrictInfo(code)` | 행정구역 코드로 정보 가져오기 | `DistrictInfo \| undefined` |
253
- | `getNameByCode(code)` | 행정구역 코드로 이름 가져오기 | `string \| undefined` |
254
- | `getAllDistrictInfo()` | 모든 지역 정보 가져오기 | `readonly DistrictInfo[]` |
255
- | `getDistrictsByRegion(region)` | 특정 시/도의 지역 정보 | `DistrictInfo[]` |
256
- | `getAllCodes()` | 모든 행정구역 코드 목록 | `number[]` |
257
- | `isValidCode(code)` | 유효한 코드인지 확인 | `boolean` |
129
+ | 메서드 | 설명 | 반환 타입 |
130
+ | --- | --- | --- |
131
+ | `utils.getIcon(code)` | 시도/시군구 코드로 아이콘 가져오기 | `IconComponent \| null` |
132
+ | `utils.findByName(name, options?)` | 이름으로 아이콘 검색 | `IconComponent \| null` |
133
+ | `utils.getInfo(code)` | 코드로 상세 정보 가져오기 | `IconInfo \| RegionInfo \| null` |
134
+ | `utils.getByRegion(codeOrName)` | 특정 시도의 시군구 목록 | `IconInfo[]` |
135
+ | `utils.getAllRegions()` | 모든 시도 정보 | `RegionInfo[]` |
136
+ | `utils.getAvailableRegions()` | 아이콘이 있는 시도만 | `RegionInfo[]` |
137
+ | `utils.getRegionsWithIcons()` | 시군구가 있는 시도만 | `RegionInfo[]` |
138
+ | `utils.getAll()` | 모든 시군구 아이콘 정보 | `IconInfo[]` |
139
+ | `utils.isValid(code)` | 유효한 코드인지 확인 | `boolean` |
258
140
 
259
141
  ### 타입
260
142
 
261
143
  ```tsx
262
- import type {
263
- SidoCode, // 11 | 26 | 27 | 28 | 31 | 41 | ...
264
- SidoInfo, // 시도 정보 객체
265
- SigunguCode, // 11110 | 11140 | ...
266
- SigunguInfo, // 시군구 정보 객체
267
- } from "@apt.today/react-seoul-icons";
268
- ```
269
-
270
- ### SidoInfo 타입
271
-
272
- ```tsx
273
- interface SidoInfo {
274
- code: SidoCode; // 시도 코드 (예: 11)
275
- name: string; // 전체 이름 (예: "서울특별시")
276
- shortName: string; // 짧은 이름 (예: "서울")
277
- englishName: string; // 영문 이름 (예: "Seoul")
278
- component: Component | null;
144
+ import type { IconComponent, IconInfo, RegionInfo } from "@apt.today/react-seoul-icons";
145
+
146
+ // IconComponent
147
+ type IconComponent = React.ComponentType<React.SVGProps<SVGSVGElement>>;
148
+
149
+ // IconInfo - 시군구 아이콘 정보
150
+ interface IconInfo {
151
+ code: number; // 시군구 코드 (예: 11680)
152
+ regionCode: number; // 소속 시도 코드 (예: 11)
153
+ regionName: string; // 소속 시도명 (예: "서울특별시")
154
+ name: string; // 이름 (예: "강남구")
155
+ shortName: string; // 단축명 (예: "강남")
156
+ componentName: string; // 컴포넌트명 (예: "GangnamGu")
157
+ component: IconComponent;
279
158
  }
280
- ```
281
159
 
282
- ### SigunguInfo 타입
283
-
284
- ```tsx
285
- interface SigunguInfo {
286
- code: SigunguCode; // 시군구 코드 (예: 11680)
287
- sidoCode: SidoCode; // 소속 시도 코드 (예: 11)
288
- name: string; // 이름 (예: "강남구")
289
- shortName: string; // 짧은 이름 (예: "강남")
290
- component: Component;
160
+ // RegionInfo - 시도 정보
161
+ interface RegionInfo {
162
+ code: number; // 시도 코드 (예: 11)
163
+ name: string; // 전체 이름 (예: "서울특별시")
164
+ shortName: string; // 단축명 (예: "서울")
165
+ englishName: string; // 영문명 (예: "Seoul")
166
+ component: IconComponent | null;
291
167
  }
292
168
  ```
293
169
 
294
- ## 행정구역 코드표
295
-
296
- ### 시도 코드
297
-
298
- | 코드 | 시도 | 컴포넌트명 |
299
- | ---- | ---------- | ---------- |
300
- | `11` | 서울특별시 | `Seoul` |
301
- | `26` | 부산광역시 | `Busan` |
302
- | `27` | 대구광역시 | `Daegu` |
303
- | `28` | 인천광역시 | `Incheon` |
304
- | `31` | 울산광역시 | `Ulsan` |
305
- | `41` | 경기도 | `Gyeonggi` |
306
-
307
- ### 서울특별시 시군구 (25개)
308
-
309
- | 코드 | 행정구 | 컴포넌트명 |
310
- | ------- | -------- | ---------------- |
311
- | `11110` | 종로구 | `JongnoGu` |
312
- | `11140` | 중구 | `JungGu` |
313
- | `11170` | 용산구 | `YongsanGu` |
314
- | `11200` | 성동구 | `SeongdongGu` |
315
- | `11215` | 광진구 | `GwangjinGu` |
316
- | `11230` | 동대문구 | `DongdaemunGu` |
317
- | `11260` | 중랑구 | `JungnangGu` |
318
- | `11290` | 성북구 | `SeongbukGu` |
319
- | `11305` | 강북구 | `GangbukGu` |
320
- | `11320` | 도봉구 | `DobongGu` |
321
- | `11350` | 노원구 | `NowonGu` |
322
- | `11380` | 은평구 | `EunpyeongGu` |
323
- | `11410` | 서대문구 | `SeodaemunGu` |
324
- | `11440` | 마포구 | `MapoGu` |
325
- | `11470` | 양천구 | `YangcheonGu` |
326
- | `11500` | 강서구 | `GangseoGu` |
327
- | `11530` | 구로구 | `GuroGu` |
328
- | `11545` | 금천구 | `GeumcheonGu` |
329
- | `11560` | 영등포구 | `YeongdeungpoGu` |
330
- | `11590` | 동작구 | `DongjakGu` |
331
- | `11620` | 관악구 | `GwanakGu` |
332
- | `11650` | 서초구 | `SeochoGu` |
333
- | `11680` | 강남구 | `GangnamGu` |
334
- | `11710` | 송파구 | `SongpaGu` |
335
- | `11740` | 강동구 | `GangdongGu` |
336
-
337
- ### 경기도 시군구 (13개)
338
-
339
- | 코드 | 시군구 | 컴포넌트명 |
340
- | ------- | -------- | --------------- |
341
- | `41110` | 수원시 | `SuwonSi` |
342
- | `41130` | 성남시 | `SeongnamSi` |
343
- | `41170` | 안양시 | `AnyangSi` |
344
- | `41210` | 광명시 | `GwangmyeongSi` |
345
- | `41280` | 고양시 | `GoyangSi` |
346
- | `41290` | 과천시 | `GwacheonSi` |
347
- | `41310` | 구리시 | `GuriSi` |
348
- | `41360` | 남양주시 | `NamyangjuSi` |
349
- | `41430` | 의왕시 | `UiwangSi` |
350
- | `41450` | 하남시 | `HanamSi` |
351
- | `41460` | 용인시 | `YonginSi` |
352
- | `41570` | 김포시 | `GimpoSi` |
353
- | `41590` | 화성시 | `HwaseongSi` |
354
-
355
- ### 부산광역시 시군구
356
-
357
- | 코드 | 시군구 | 컴포넌트명 |
358
- | ------- | -------- | ------------ |
359
- | `26350` | 해운대구 | `HaeundaeGu` |
360
-
361
- ### 대구광역시 시군구
362
-
363
- | 코드 | 시군구 | 컴포넌트명 |
364
- | ------- | ------ | ----------- |
365
- | `27260` | 수성구 | `SuseongGu` |
366
-
367
- ### 인천광역시 시군구
368
-
369
- | 코드 | 시군구 | 컴포넌트명 |
370
- | ------- | ------ | ---------- |
371
- | `28185` | 연수구 | `YeonsuGu` |
372
-
373
- ### 울산광역시 시군구
374
-
375
- | 코드 | 시군구 | 컴포넌트명 |
376
- | ------- | ------ | ---------- |
377
- | `31140` | 남구 | `NamGu` |
378
-
379
- ## Props
380
-
381
- 모든 컴포넌트는 SVG 요소의 표준 props를 지원합니다:
382
-
383
- ```tsx
384
- interface IconProps extends React.SVGProps<SVGSVGElement> {}
385
- ```
386
-
387
- 일반적으로 사용되는 props:
388
-
389
- - `className`: CSS 클래스명
390
- - `style`: 인라인 스타일
391
- - `width`: 너비
392
- - `height`: 높이
393
- - `fill`: 색상 (일부 아이콘은 고정 색상)
394
- - `onClick`: 클릭 이벤트 핸들러
395
-
396
- ## 예제
170
+ ## 지원 행정구역
397
171
 
398
- ### Tailwind CSS와 함께 사용
172
+ ### 시도 (광역시/도)
399
173
 
400
- ```tsx
401
- import { GangnamGu } from "@apt.today/react-seoul-icons";
174
+ | 시도 | 코드 | 컴포넌트명 |
175
+ | --- | --- | --- |
176
+ | 서울특별시 | `11` | `Seoul` |
177
+ | 부산광역시 | `26` | `Busan` |
178
+ | 대구광역시 | `27` | `Daegu` |
179
+ | 인천광역시 | `28` | `Incheon` |
180
+ | 울산광역시 | `31` | `Ulsan` |
181
+ | 경기도 | `41` | `Gyeonggi` |
402
182
 
403
- function Example() {
404
- return <GangnamGu className="w-16 h-16 text-blue-500 hover:text-blue-700" />;
405
- }
406
- ```
183
+ ### 시군구
407
184
 
408
- ### API 응답에서 동적으로 사용
185
+ - **서울특별시**: 25개 자치구 (강남구, 종로구, 마포구 등)
186
+ - **경기도**: 14개 시 (수원시, 고양시, 용인시, 화성시, 성남시, 안양시, 광명시, 과천시, 구리시, 남양주시, 하남시, 의왕시, 김포시, 파주시)
187
+ - **부산광역시**: 해운대구
188
+ - **대구광역시**: 수성구
189
+ - **인천광역시**: 연수구
190
+ - **울산광역시**: 남구
409
191
 
410
- ```tsx
411
- import { getSidoIcon, getSigunguIcon } from "@apt.today/react-seoul-icons";
192
+ ## v1에서 마이그레이션
412
193
 
413
- // API에서 행정구역 코드를 받은 경우
414
- function DistrictIcon({ code }: { code: number }) {
415
- const Icon = getSigunguIcon(code);
416
- if (!Icon) return null;
417
- return <Icon width={48} height={48} />;
418
- }
194
+ v2에서는 API `utils` 네임스페이스로 통합되었습니다.
419
195
 
420
- // 시도 아이콘
421
- function SidoIcon({ code }: { code: number }) {
422
- const Icon = getSidoIcon(code);
423
- if (!Icon) return null;
424
- return <Icon width={64} height={64} />;
425
- }
426
- ```
196
+ | v1 | v2 |
197
+ | --- | --- |
198
+ | `getSidoIcon(11)` | `utils.getIcon(11)` |
199
+ | `getSigunguIcon(11680)` | `utils.getIcon(11680)` |
200
+ | `getIconByCode(11680)` | `utils.getIcon(11680)` |
201
+ | `getIconByName("강남구")` | `utils.findByName("강남구")` |
202
+ | `getSigunguIconByName("강남구")` | `utils.findByName("강남구")` |
203
+ | `getAllDistrictInfo()` | `utils.getAll()` |
204
+ | `getAllSigunguInfo()` | `utils.getAll()` |
205
+ | `getDistrictsByRegion("서울")` | `utils.getByRegion("서울")` |
206
+ | `getSigunguBySido(11)` | `utils.getByRegion(11)` |
207
+ | `getAllSidoInfo()` | `utils.getAllRegions()` |
208
+ | `type SidoInfo` | `type RegionInfo` |
209
+ | `type SigunguInfo` | `type IconInfo` |
210
+ | `type DistrictInfo` | `type IconInfo` |
427
211
 
428
- ### 지역 목록 렌더링
212
+ 아이콘 컴포넌트의 직접 import는 변경 없이 동일합니다:
429
213
 
430
214
  ```tsx
431
- import { getSigunguBySido } from "@apt.today/react-seoul-icons";
432
-
433
- function DistrictList() {
434
- const seoulDistricts = getSigunguBySido(11);
435
-
436
- return (
437
- <div className="grid grid-cols-5 gap-4">
438
- {seoulDistricts.map((district) => (
439
- <div key={district.code} className="flex flex-col items-center">
440
- <district.component className="w-12 h-12" />
441
- <span>{district.name}</span>
442
- </div>
443
- ))}
444
- </div>
445
- );
446
- }
215
+ // v1과 v2 모두 동일
216
+ import { GangnamGu, Seoul } from "@apt.today/react-seoul-icons";
447
217
  ```
448
218
 
449
219
  ## 라이선스
@@ -456,7 +226,7 @@ function DistrictList() {
456
226
 
457
227
  본 라이브러리의 소스 코드는 MIT 라이선스를 따릅니다.
458
228
 
459
- 자세한 내용은 [LICENSE](./LICENSE) 파일을 참고하세요
229
+ 자세한 내용은 [LICENSE](./LICENSE) 파일을 참고하세요.
460
230
 
461
231
  ## About apt.today
462
232
 
@@ -464,12 +234,6 @@ function DistrictList() {
464
234
 
465
235
  **apt.today**는 부동산 정보를 제공하는 서비스로, 전국 지자체별 고시공고문, 모집공고문, 토지거래허가내역을 비롯한 다양한 아파트 관련 정보를 확인 할 수 있는 플랫폼입니다.
466
236
 
467
- 본 아이콘 라이브러리는 apt.today 서비스에서 각 행정구역의 데이터를 시각적으로 표현하기 위해 개발되었으며, 누구나 자유롭게 사용할 수 있도록 오픈소스로 공개되었습니다.
468
-
469
- ### 관련 프로젝트
470
-
471
- - 🏢 [apt.today](https://apt.today) - 손 쉽게 찾는 부동산 정보, 오늘의 아파트
472
-
473
237
  ## 기여
474
238
 
475
239
  이슈 제보 및 풀 리퀘스트는 언제나 환영합니다!