@apt.today/react-seoul-icons 1.1.0 → 1.2.1

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,18 @@
10
10
 
11
11
  대한민국 광역자치단체(시/도) 및 기초자치단체(시/군/구) 로고 아이콘을 React 컴포넌트로 제공하는 라이브러리입니다.
12
12
 
13
- 🌐 [데모 페이지](https://myriky.github.io/apt-today-react-seoul-icons/)
13
+ [데모 페이지](https://myriky.github.io/apt-today-react-seoul-icons/)
14
14
 
15
- ## 지원 행정구역
16
-
17
- ### 시도 (광역시/도)
15
+ ### 데모 사이트 배포
18
16
 
19
- | 시도 | 코드 | 컴포넌트명 |
20
- | ---------- | ---- | ---------- |
21
- | 서울특별시 | `11` | `Seoul` |
22
- | 부산광역시 | `26` | `Busan` |
23
- | 대구광역시 | `27` | `Daegu` |
24
- | 인천광역시 | `28` | `Incheon` |
25
- | 울산광역시 | `31` | `Ulsan` |
26
- | 경기도 | `41` | `Gyeonggi` |
17
+ 데모는 **main 브랜치에 push될 때마다** [GitHub Actions](.github/workflows/deploy.yml)가 예제 앱을 빌드해 자동으로 갱신합니다.
18
+ 처음 저장소 **Settings Pages**에서 Source를 **GitHub Actions**로 선택해두면, 이후 main에 머지·푸시할 때마다 데모가 자동 배포됩니다.
27
19
 
28
- ### 시군구
20
+ 로컬에서 수동 배포하려면 (Pages 소스가 gh-pages 브랜치인 경우):
29
21
 
30
- - **서울특별시**: 25개 자치구 (강남구, 종로구, 마포구 등)
31
- - **경기도**: 13개 (수원시, 고양시, 용인시, 화성시, 성남시, 안양시, 광명시, 과천시, 구리시, 남양주시, 하남시, 의왕시, 김포시)
32
- - **부산광역시**: 해운대구
33
- - **대구광역시**: 수성구
34
- - **인천광역시**: 연수구
35
- - **울산광역시**: 남구
22
+ ```bash
23
+ cd example && yarn deploy
24
+ ```
36
25
 
37
26
  ## 설치
38
27
 
@@ -40,410 +29,202 @@
40
29
  npm install @apt.today/react-seoul-icons
41
30
  ```
42
31
 
43
- 또는
44
-
45
32
  ```bash
46
33
  yarn add @apt.today/react-seoul-icons
47
34
  ```
48
35
 
49
36
  ## 사용법
50
37
 
51
- ### 개별 컴포넌트 Import
38
+ ### 컴포넌트 직접 사용
39
+
40
+ 아이콘을 직접 import해서 React 컴포넌트로 사용합니다.
52
41
 
53
42
  ```tsx
54
- import {
55
- Seoul,
56
- GangnamGu,
57
- JongnoGu,
58
- MapoGu,
59
- } from "@apt.today/react-seoul-icons";
43
+ import { GangnamGu, Seoul, MapoGu } from "@apt.today/react-seoul-icons";
60
44
 
61
45
  function App() {
62
46
  return (
63
47
  <div>
64
48
  <Seoul width={64} height={64} />
65
49
  <GangnamGu className="w-12 h-12" />
66
- <JongnoGu style={{ width: 48, height: 48 }} />
67
- <MapoGu width={48} height={48} />
50
+ <MapoGu style={{ width: 48, height: 48 }} />
68
51
  </div>
69
52
  );
70
53
  }
71
54
  ```
72
55
 
73
- ### 시도 아이콘 사용
74
-
75
- ```tsx
76
- import {
77
- Seoul,
78
- Busan,
79
- Incheon,
80
- Gyeonggi,
81
- getSidoIcon,
82
- } from "@apt.today/react-seoul-icons";
56
+ ### 유틸리티로 동적 조회
83
57
 
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
- ### 시군구 아이콘 사용
58
+ 코드나 이름으로 아이콘을 동적으로 가져올 때는 `utils`를 사용합니다.
95
59
 
96
60
  ```tsx
97
- import { getSigunguIcon, getSigunguBySido } from "@apt.today/react-seoul-icons";
61
+ import { utils } from "@apt.today/react-seoul-icons";
98
62
 
99
- function App() {
100
- // 코드로 시군구 아이콘 가져오기
101
- const GangnamIcon = getSigunguIcon(11680);
63
+ // 코드로 아이콘 가져오기 (시도 2자리 / 시군구 5자리 자동 판별)
64
+ const SeoulIcon = utils.getIcon(11); // 서울특별시
65
+ const GangnamIcon = utils.getIcon(11680); // 강남구
102
66
 
103
- // 시도별 시군구 목록 가져오기
104
- const seoulDistricts = getSigunguBySido(11);
105
- const gyeonggiCities = getSigunguBySido(41);
67
+ // 이름으로 아이콘 검색
68
+ const Icon = utils.findByName("강남구");
69
+ const Icon2 = utils.findByName("강남");
70
+ const Icon3 = utils.findByName("서울특별시 강남구");
71
+ const Icon4 = utils.findByName("서울 강남구");
106
72
 
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
- }
73
+ // 중복 이름(중구 등)은 region 옵션으로 구분
74
+ const JungGu = utils.findByName("중구", { region: "서울" });
116
75
  ```
117
76
 
118
- ### 전체 Import (네임스페이스)
77
+ ### 지역별 목록 조회
119
78
 
120
79
  ```tsx
121
- import * as SeoulIcons from "@apt.today/react-seoul-icons";
80
+ import { utils } from "@apt.today/react-seoul-icons";
122
81
 
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
- ```
133
-
134
- ### 동적 아이콘 렌더링 (컴포넌트 이름 기반)
82
+ // 시도별 시군구 목록
83
+ const seoulIcons = utils.getByRegion(11); // 코드로
84
+ const gyeonggiIcons = utils.getByRegion("경기"); // 이름으로
135
85
 
136
- ```tsx
137
- import * as SeoulIcons from "@apt.today/react-seoul-icons";
86
+ // 전체 시도 목록
87
+ const regions = utils.getAllRegions();
138
88
 
139
- const districts = ["GangnamGu", "MapoGu", "JongnoGu"];
89
+ // 전체 시군구 목록
90
+ const allIcons = utils.getAll();
140
91
 
141
- function App() {
92
+ function DistrictList() {
142
93
  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
- })}
94
+ <div className="grid grid-cols-5 gap-4">
95
+ {seoulIcons.map((icon) => (
96
+ <div key={icon.code} className="flex flex-col items-center">
97
+ <icon.component className="w-12 h-12" />
98
+ <span>{icon.name}</span>
99
+ </div>
100
+ ))}
150
101
  </div>
151
102
  );
152
103
  }
153
104
  ```
154
105
 
155
- ### 행정구역 코드로 아이콘 가져오기 ⭐
106
+ ### API 응답에서 동적으로 사용
156
107
 
157
108
  ```tsx
158
- import { getSidoIcon, getSigunguIcon } from "@apt.today/react-seoul-icons";
109
+ import { utils } from "@apt.today/react-seoul-icons";
159
110
 
160
- function App() {
161
- // 시도 아이콘
162
- const SeoulIcon = getSidoIcon(11);
163
- const BusanIcon = getSidoIcon(26);
164
-
165
- // 시군구 아이콘
166
- const GangnamIcon = getSigunguIcon(11680);
167
- const HaeundaeIcon = getSigunguIcon(26350);
111
+ // 행정구역 코드를 받은 경우
112
+ function DistrictIcon({ code }: { code: number }) {
113
+ const Icon = utils.getIcon(code);
114
+ if (!Icon) return null;
115
+ return <Icon width={48} height={48} />;
116
+ }
168
117
 
169
- return (
170
- <div>
171
- {SeoulIcon && <SeoulIcon width={64} height={64} />}
172
- {GangnamIcon && <GangnamIcon width={48} height={48} />}
173
- </div>
174
- );
118
+ // 지역명을 받은 경우
119
+ function DistrictIconByName({ name }: { name: string }) {
120
+ const Icon = utils.findByName(name);
121
+ if (!Icon) return null;
122
+ return <Icon width={48} height={48} />;
175
123
  }
176
124
  ```
177
125
 
178
- ### 이름으로 아이콘 가져오기
126
+ ## API
179
127
 
180
- ```tsx
181
- import { getSigunguIconByName } from "@apt.today/react-seoul-icons";
182
-
183
- // 다양한 형식 지원
184
- const Icon1 = getSigunguIconByName("강남구"); // ✅
185
- const Icon2 = getSigunguIconByName("강남"); // ✅
186
- const Icon3 = getSigunguIconByName("서울특별시 강남구"); // ✅
187
-
188
- // 중복되는 이름(남구 등)은 sidoCode 옵션 필요
189
- const UlsanNam = getSigunguIconByName("남구", { sidoCode: 31 }); // ✅ 울산 남구
190
- ```
128
+ ### 아이콘 컴포넌트
191
129
 
192
- ### 모든 지역 정보 가져오기
130
+ 모든 아이콘 컴포넌트는 `React.SVGProps<SVGSVGElement>`를 지원합니다.
193
131
 
194
132
  ```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
- }
133
+ <GangnamGu width={48} height={48} />
134
+ <GangnamGu className="w-12 h-12" />
135
+ <GangnamGu style={{ width: 48 }} />
224
136
  ```
225
137
 
226
- ## API 레퍼런스
227
-
228
- ### 시도 관련 함수
229
-
230
- | 함수 | 설명 | 반환 타입 |
231
- | ------------------- | --------------------------- | ----------------------- |
232
- | `getSidoIcon(code)` | 시도 코드로 아이콘 가져오기 | `Component \| null` |
233
- | `getSidoInfo(code)` | 시도 코드로 정보 가져오기 | `SidoInfo \| undefined` |
234
- | `getAllSidoInfo()` | 모든 시도 정보 가져오기 | `SidoInfo[]` |
235
-
236
- ### 시군구 관련 함수
138
+ ### utils
237
139
 
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` |
140
+ | 메서드 | 설명 | 반환 타입 |
141
+ | --- | --- | --- |
142
+ | `utils.getIcon(code)` | 시도/시군구 코드로 아이콘 가져오기 | `IconComponent \| null` |
143
+ | `utils.findByName(name, options?)` | 이름으로 아이콘 검색 | `IconComponent \| null` |
144
+ | `utils.getInfo(code)` | 코드로 상세 정보 가져오기 | `IconInfo \| RegionInfo \| null` |
145
+ | `utils.getByRegion(codeOrName)` | 특정 시도의 시군구 목록 | `IconInfo[]` |
146
+ | `utils.getAllRegions()` | 모든 시도 정보 | `RegionInfo[]` |
147
+ | `utils.getAvailableRegions()` | 아이콘이 있는 시도만 | `RegionInfo[]` |
148
+ | `utils.getRegionsWithIcons()` | 시군구가 있는 시도만 | `RegionInfo[]` |
149
+ | `utils.getAll()` | 모든 시군구 아이콘 정보 | `IconInfo[]` |
150
+ | `utils.isValid(code)` | 유효한 코드인지 확인 | `boolean` |
258
151
 
259
152
  ### 타입
260
153
 
261
154
  ```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;
155
+ import type { IconComponent, IconInfo, RegionInfo } from "@apt.today/react-seoul-icons";
156
+
157
+ // IconComponent
158
+ type IconComponent = React.ComponentType<React.SVGProps<SVGSVGElement>>;
159
+
160
+ // IconInfo - 시군구 아이콘 정보
161
+ interface IconInfo {
162
+ code: number; // 시군구 코드 (예: 11680)
163
+ regionCode: number; // 소속 시도 코드 (예: 11)
164
+ regionName: string; // 소속 시도명 (예: "서울특별시")
165
+ name: string; // 이름 (예: "강남구")
166
+ shortName: string; // 단축명 (예: "강남")
167
+ componentName: string; // 컴포넌트명 (예: "GangnamGu")
168
+ component: IconComponent;
279
169
  }
280
- ```
281
170
 
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;
171
+ // RegionInfo - 시도 정보
172
+ interface RegionInfo {
173
+ code: number; // 시도 코드 (예: 11)
174
+ name: string; // 전체 이름 (예: "서울특별시")
175
+ shortName: string; // 단축명 (예: "서울")
176
+ englishName: string; // 영문명 (예: "Seoul")
177
+ component: IconComponent | null;
291
178
  }
292
179
  ```
293
180
 
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
- ## 예제
181
+ ## 지원 행정구역
397
182
 
398
- ### Tailwind CSS와 함께 사용
183
+ ### 시도 (광역시/도)
399
184
 
400
- ```tsx
401
- import { GangnamGu } from "@apt.today/react-seoul-icons";
185
+ | 시도 | 코드 | 컴포넌트명 |
186
+ | --- | --- | --- |
187
+ | 서울특별시 | `11` | `Seoul` |
188
+ | 부산광역시 | `26` | `Busan` |
189
+ | 대구광역시 | `27` | `Daegu` |
190
+ | 인천광역시 | `28` | `Incheon` |
191
+ | 울산광역시 | `31` | `Ulsan` |
192
+ | 경기도 | `41` | `Gyeonggi` |
402
193
 
403
- function Example() {
404
- return <GangnamGu className="w-16 h-16 text-blue-500 hover:text-blue-700" />;
405
- }
406
- ```
194
+ ### 시군구
407
195
 
408
- ### API 응답에서 동적으로 사용
196
+ - **서울특별시**: 25개 자치구 (강남구, 종로구, 마포구 등)
197
+ - **경기도**: 14개 시 (수원시, 고양시, 용인시, 화성시, 성남시, 안양시, 광명시, 과천시, 구리시, 남양주시, 하남시, 의왕시, 김포시, 파주시)
198
+ - **부산광역시**: 해운대구
199
+ - **대구광역시**: 수성구
200
+ - **인천광역시**: 연수구
201
+ - **울산광역시**: 남구
409
202
 
410
- ```tsx
411
- import { getSidoIcon, getSigunguIcon } from "@apt.today/react-seoul-icons";
203
+ ## v1에서 마이그레이션
412
204
 
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
- }
205
+ v2에서는 API `utils` 네임스페이스로 통합되었습니다.
419
206
 
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
- ```
207
+ | v1 | v2 |
208
+ | --- | --- |
209
+ | `getSidoIcon(11)` | `utils.getIcon(11)` |
210
+ | `getSigunguIcon(11680)` | `utils.getIcon(11680)` |
211
+ | `getIconByCode(11680)` | `utils.getIcon(11680)` |
212
+ | `getIconByName("강남구")` | `utils.findByName("강남구")` |
213
+ | `getSigunguIconByName("강남구")` | `utils.findByName("강남구")` |
214
+ | `getAllDistrictInfo()` | `utils.getAll()` |
215
+ | `getAllSigunguInfo()` | `utils.getAll()` |
216
+ | `getDistrictsByRegion("서울")` | `utils.getByRegion("서울")` |
217
+ | `getSigunguBySido(11)` | `utils.getByRegion(11)` |
218
+ | `getAllSidoInfo()` | `utils.getAllRegions()` |
219
+ | `type SidoInfo` | `type RegionInfo` |
220
+ | `type SigunguInfo` | `type IconInfo` |
221
+ | `type DistrictInfo` | `type IconInfo` |
427
222
 
428
- ### 지역 목록 렌더링
223
+ 아이콘 컴포넌트의 직접 import는 변경 없이 동일합니다:
429
224
 
430
225
  ```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
- }
226
+ // v1과 v2 모두 동일
227
+ import { GangnamGu, Seoul } from "@apt.today/react-seoul-icons";
447
228
  ```
448
229
 
449
230
  ## 라이선스
@@ -456,7 +237,7 @@ function DistrictList() {
456
237
 
457
238
  본 라이브러리의 소스 코드는 MIT 라이선스를 따릅니다.
458
239
 
459
- 자세한 내용은 [LICENSE](./LICENSE) 파일을 참고하세요
240
+ 자세한 내용은 [LICENSE](./LICENSE) 파일을 참고하세요.
460
241
 
461
242
  ## About apt.today
462
243
 
@@ -464,12 +245,6 @@ function DistrictList() {
464
245
 
465
246
  **apt.today**는 부동산 정보를 제공하는 서비스로, 전국 지자체별 고시공고문, 모집공고문, 토지거래허가내역을 비롯한 다양한 아파트 관련 정보를 확인 할 수 있는 플랫폼입니다.
466
247
 
467
- 본 아이콘 라이브러리는 apt.today 서비스에서 각 행정구역의 데이터를 시각적으로 표현하기 위해 개발되었으며, 누구나 자유롭게 사용할 수 있도록 오픈소스로 공개되었습니다.
468
-
469
- ### 관련 프로젝트
470
-
471
- - 🏢 [apt.today](https://apt.today) - 손 쉽게 찾는 부동산 정보, 오늘의 아파트
472
-
473
248
  ## 기여
474
249
 
475
250
  이슈 제보 및 풀 리퀘스트는 언제나 환영합니다!