@uniai-fe/ui-legacy 0.1.8 → 0.1.10

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniai-fe/ui-legacy",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Legacy UI Toolkit for UNIAI FE Projects",
5
5
  "type": "module",
6
6
  "private": false,
@@ -10,7 +10,7 @@
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
- "packageManager": "pnpm@10.23.0",
13
+ "packageManager": "pnpm@10.24.0",
14
14
  "engines": {
15
15
  "node": ">=24",
16
16
  "pnpm": ">=10"
@@ -24,9 +24,11 @@
24
24
  "src"
25
25
  ],
26
26
  "scripts": {
27
+ "format": "prettier --write .",
28
+ "format:check": "prettier --check .",
27
29
  "lint": "eslint . --max-warnings=0",
28
30
  "typecheck": "tsc --project tsconfig.build.json --noEmit",
29
- "build": "pnpm typecheck",
31
+ "build": "pnpm format && pnpm typecheck",
30
32
  "dev": "tsc --project tsconfig.build.json --watch --noEmit",
31
33
  "module:lint": "pnpm lint",
32
34
  "module:typecheck": "pnpm typecheck",
@@ -82,27 +84,27 @@
82
84
  "@mantine/dates": "^8.3.9",
83
85
  "@mantine/hooks": "^8.3.9",
84
86
  "@mantine/tiptap": "^8.3.9",
85
- "@tanstack/react-query": "^5.90.10",
86
- "@tiptap/extension-blockquote": "^3.11.0",
87
- "@tiptap/extension-bold": "^3.11.0",
88
- "@tiptap/extension-code": "^3.11.0",
89
- "@tiptap/extension-code-block": "^3.11.0",
90
- "@tiptap/extension-document": "^3.11.0",
91
- "@tiptap/extension-hard-break": "^3.11.0",
92
- "@tiptap/extension-heading": "^3.11.0",
93
- "@tiptap/extension-horizontal-rule": "^3.11.0",
94
- "@tiptap/extension-italic": "^3.11.0",
95
- "@tiptap/extension-link": "^3.11.0",
96
- "@tiptap/extension-list": "^3.11.0",
97
- "@tiptap/extension-paragraph": "^3.11.0",
98
- "@tiptap/extension-placeholder": "^3.11.0",
99
- "@tiptap/extension-strike": "^3.11.0",
100
- "@tiptap/extension-text": "^3.11.0",
101
- "@tiptap/extension-text-align": "^3.11.0",
102
- "@tiptap/extension-underline": "^3.11.0",
103
- "@tiptap/pm": "^3.11.0",
104
- "@tiptap/react": "^3.11.0",
105
- "@tiptap/starter-kit": "^3.11.0",
87
+ "@tanstack/react-query": "^5.90.12",
88
+ "@tiptap/extension-blockquote": "^3.12.1",
89
+ "@tiptap/extension-bold": "^3.12.1",
90
+ "@tiptap/extension-code": "^3.12.1",
91
+ "@tiptap/extension-code-block": "^3.12.1",
92
+ "@tiptap/extension-document": "^3.12.1",
93
+ "@tiptap/extension-hard-break": "^3.12.1",
94
+ "@tiptap/extension-heading": "^3.12.1",
95
+ "@tiptap/extension-horizontal-rule": "^3.12.1",
96
+ "@tiptap/extension-italic": "^3.12.1",
97
+ "@tiptap/extension-link": "^3.12.1",
98
+ "@tiptap/extension-list": "^3.12.1",
99
+ "@tiptap/extension-paragraph": "^3.12.1",
100
+ "@tiptap/extension-placeholder": "^3.12.1",
101
+ "@tiptap/extension-strike": "^3.12.1",
102
+ "@tiptap/extension-text": "^3.12.1",
103
+ "@tiptap/extension-text-align": "^3.12.1",
104
+ "@tiptap/extension-underline": "^3.12.1",
105
+ "@tiptap/pm": "^3.12.1",
106
+ "@tiptap/react": "^3.12.1",
107
+ "@tiptap/starter-kit": "^3.12.1",
106
108
  "@types/node": "^24.10.1",
107
109
  "@types/react": "^19.2.7",
108
110
  "@types/react-dom": "^19.2.3",
@@ -121,19 +123,19 @@
121
123
  "dayjs": "^1.11.19",
122
124
  "eslint": "^9.39.1",
123
125
  "flatpickr": "^4.6.13",
124
- "jotai": "^2.15.1",
126
+ "jotai": "^2.15.2",
125
127
  "next": "^15.5.6",
126
128
  "postcss": "^8.5.6",
127
129
  "postcss-preset-mantine": "^1.18.0",
128
130
  "postcss-simple-vars": "^7.0.1",
129
131
  "pretendard": "^1.3.9",
130
132
  "pretendard-jp": "^1.3.9",
131
- "prettier": "^3.6.2",
132
- "react": "^19.2.0",
133
+ "prettier": "^3.7.4",
134
+ "react": "^19.2.1",
133
135
  "react-daum-postcode": "^3.2.0",
134
- "react-dom": "^19.2.0",
136
+ "react-dom": "^19.2.1",
135
137
  "react-flatpickr": "3.10.13",
136
- "react-hook-form": "^7.66.1",
138
+ "react-hook-form": "^7.68.0",
137
139
  "sass": "^1.94.2",
138
140
  "simplebar-core": "^1.3.2",
139
141
  "simplebar-react": "3.3.2",
@@ -29,10 +29,8 @@ import useInputMask from "./useInputMask";
29
29
  * }
30
30
  */
31
31
  export default function useFieldChangeEvents<
32
- Field extends
33
- | HTMLInputElement
34
- | HTMLTextAreaElement
35
- | HTMLSelectElement = HTMLInputElement,
32
+ Field extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =
33
+ HTMLInputElement,
36
34
  >({
37
35
  state,
38
36
  convertNumber,
@@ -1,101 +1,370 @@
1
1
  @charset "UTF-8";
2
2
 
3
3
  /* reset; ~ 2025. 08. */
4
- :root {-webkit-tap-highlight-color:transparent; text-size-adjust: none; overflow-wrap:break-word; word-break:break-word;}
5
- *, *:before, *:after {border:0; margin:0; padding:0; box-sizing:border-box;}
6
- *:before, *:after {border:0; margin:0; padding:0; box-sizing:border-box;}
7
- * {letter-spacing:-.05em; flex-shrink:0; overscroll-behavior-y: none;/*iOS 스크롤 바운스 해제*/}
8
- *:focus, *:focus-within, *:focus-visible {outline:none;}
4
+ :root {
5
+ -webkit-tap-highlight-color: transparent;
6
+ text-size-adjust: none;
7
+ overflow-wrap: break-word;
8
+ word-break: break-word;
9
+ }
10
+ *,
11
+ *:before,
12
+ *:after {
13
+ border: 0;
14
+ margin: 0;
15
+ padding: 0;
16
+ box-sizing: border-box;
17
+ }
18
+ *:before,
19
+ *:after {
20
+ border: 0;
21
+ margin: 0;
22
+ padding: 0;
23
+ box-sizing: border-box;
24
+ }
25
+ * {
26
+ letter-spacing: -0.05em;
27
+ flex-shrink: 0;
28
+ overscroll-behavior-y: none; /*iOS 스크롤 바운스 해제*/
29
+ }
30
+ *:focus,
31
+ *:focus-within,
32
+ *:focus-visible {
33
+ outline: none;
34
+ }
9
35
 
10
36
  /* Document */
11
- html {width:100%; font-size:10px; font-family: "Pretendard Variable", "Pretendard JP", "Pretendard", 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Segoe UI', Roboto, 'Helvetica', 'Helvetica Neue', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', '맑은 고딕', 'Malgun Gothic', '돋움', 'dotum', Oxygen, 'Oxygen-Sans', 'Ubuntu', 'Cantarell', sans-serif; background-color:#fff; touch-action: manipulation;}
12
- body {width:100%; position:relative; background:none;}
37
+ html {
38
+ width: 100%;
39
+ font-size: 10px;
40
+ font-family:
41
+ "Pretendard Variable",
42
+ "Pretendard JP",
43
+ "Pretendard",
44
+ "Noto Sans KR",
45
+ -apple-system,
46
+ BlinkMacSystemFont,
47
+ "Apple SD Gothic Neo",
48
+ "Segoe UI",
49
+ Roboto,
50
+ "Helvetica",
51
+ "Helvetica Neue",
52
+ "Apple Color Emoji",
53
+ "Segoe UI Emoji",
54
+ "Segoe UI Symbol",
55
+ "맑은 고딕",
56
+ "Malgun Gothic",
57
+ "돋움",
58
+ "dotum",
59
+ Oxygen,
60
+ "Oxygen-Sans",
61
+ "Ubuntu",
62
+ "Cantarell",
63
+ sans-serif;
64
+ background-color: #fff;
65
+ touch-action: manipulation;
66
+ }
67
+ body {
68
+ width: 100%;
69
+ position: relative;
70
+ background: none;
71
+ }
13
72
 
14
73
  /* Text */
15
- h1, h2, h3, h4, h5, h6 {font-weight:500; margin:0; padding:0; line-height: 1em;}
16
- strong, b {font-weight:700; line-height: 1em;}
17
- p, span, i, sup, sub, del, ins, s {word-break:keep-all; margin:0; padding:0;}
18
- span, i {word-break:keep-all; margin:0; padding:0;}
19
- i, address, cite, em, q {font-weight:400; font-style:normal;}
20
- span, i, sup, sub, del, ins, s, address, cite, em, q {line-height: 1em;}
21
- blockquote, abbr, dfn {font-weight:400;}
22
- pre, code, samp, kbd, var {font-family: 'Consolas', 'Monaco', 'Menlo', 'DejaVu Sans Mono', SFMono-Regular, 'Liberation Mono', 'Courier New', monospace;}
23
- blockquote, q {quotes:none;}
24
- blockquote:before, blockquote:after, q:before, q:after {content:''; content:none;}
74
+ h1,
75
+ h2,
76
+ h3,
77
+ h4,
78
+ h5,
79
+ h6 {
80
+ font-weight: 500;
81
+ margin: 0;
82
+ padding: 0;
83
+ line-height: 1em;
84
+ }
85
+ strong,
86
+ b {
87
+ font-weight: 700;
88
+ line-height: 1em;
89
+ }
90
+ p,
91
+ span,
92
+ i,
93
+ sup,
94
+ sub,
95
+ del,
96
+ ins,
97
+ s {
98
+ word-break: keep-all;
99
+ margin: 0;
100
+ padding: 0;
101
+ }
102
+ span,
103
+ i {
104
+ word-break: keep-all;
105
+ margin: 0;
106
+ padding: 0;
107
+ }
108
+ i,
109
+ address,
110
+ cite,
111
+ em,
112
+ q {
113
+ font-weight: 400;
114
+ font-style: normal;
115
+ }
116
+ span,
117
+ i,
118
+ sup,
119
+ sub,
120
+ del,
121
+ ins,
122
+ s,
123
+ address,
124
+ cite,
125
+ em,
126
+ q {
127
+ line-height: 1em;
128
+ }
129
+ blockquote,
130
+ abbr,
131
+ dfn {
132
+ font-weight: 400;
133
+ }
134
+ pre,
135
+ code,
136
+ samp,
137
+ kbd,
138
+ var {
139
+ font-family:
140
+ "Consolas", "Monaco", "Menlo", "DejaVu Sans Mono", SFMono-Regular,
141
+ "Liberation Mono", "Courier New", monospace;
142
+ }
143
+ blockquote,
144
+ q {
145
+ quotes: none;
146
+ }
147
+ blockquote:before,
148
+ blockquote:after,
149
+ q:before,
150
+ q:after {
151
+ content: "";
152
+ content: none;
153
+ }
25
154
 
26
155
  /* Media */
27
- img, svg {perspective: 1; max-width:100%; object-fit: contain;}
156
+ img,
157
+ svg {
158
+ perspective: 1;
159
+ max-width: 100%;
160
+ object-fit: contain;
161
+ }
28
162
 
29
163
  /* List */
30
164
  // ul, ol, dl {list-style:none;}
31
- li, dt, dd {list-style:none;}
165
+ li,
166
+ dt,
167
+ dd {
168
+ list-style: none;
169
+ }
32
170
 
33
171
  /* Table */
34
- table {border-collapse:collapse; border-spacing: 0; table-layout: fixed;}
35
- thead, tbody, tfoot {}
36
- tr {}
37
- th, td {}
38
- caption {display:none;}
172
+ table {
173
+ border-collapse: collapse;
174
+ border-spacing: 0;
175
+ table-layout: fixed;
176
+ }
177
+ thead,
178
+ tbody,
179
+ tfoot {
180
+ }
181
+ tr {
182
+ }
183
+ th,
184
+ td {
185
+ }
186
+ caption {
187
+ display: none;
188
+ }
39
189
 
40
190
  /* Form */
41
- form, fieldset {}
42
- label {display:block;}
43
- legend {display:none;}
191
+ form,
192
+ fieldset {
193
+ }
194
+ label {
195
+ display: block;
196
+ }
197
+ legend {
198
+ display: none;
199
+ }
44
200
 
45
201
  /* HTML5 - 일반 */
46
- article, aside, footer, header, main, nav, section, time {display:block;}
202
+ article,
203
+ aside,
204
+ footer,
205
+ header,
206
+ main,
207
+ nav,
208
+ section,
209
+ time {
210
+ display: block;
211
+ }
47
212
  /* HTML5 - Media */
48
- audio, canvas, figure, figcaption, video {display:block;}
49
- figure { position: relative; width: fit-content; height: fit-content; font-size: 0; }
213
+ audio,
214
+ canvas,
215
+ figure,
216
+ figcaption,
217
+ video {
218
+ display: block;
219
+ }
220
+ figure {
221
+ position: relative;
222
+ width: fit-content;
223
+ height: fit-content;
224
+ font-size: 0;
225
+ }
50
226
  /* HTML5 - 게이지 형태 */
51
- meter, progress {display:block;}
227
+ meter,
228
+ progress {
229
+ display: block;
230
+ }
52
231
  /* HTML5 - 기능이 포함된 태그 (특정 input 태그에 대해, 자동완성 기능 제공) */
53
- mark {display:inline;} /* highlight 기능, 텍스트에 배경칠을 하여 강조 */
54
- details, summary {display:block;}
232
+ mark {
233
+ display: inline;
234
+ } /* highlight 기능, 텍스트에 배경칠을 하여 강조 */
235
+ details,
236
+ summary {
237
+ display: block;
238
+ }
55
239
  /* details - 아코디언 기법이 적용된 태그, 포함된 내용을 접었다 펴서 가릴 수 있음 */
56
240
  /* summary - details의 요약정보를 항상 보여줌, 아코디언 요소의 타이틀과 같은 역할 */
57
- datalist {} /* 특정 input 태그에 대해, 자동완성 기능 제공 */
241
+ datalist {
242
+ } /* 특정 input 태그에 대해, 자동완성 기능 제공 */
58
243
  /* 미지원 또는 불필요 HTML 태그 목록 */
59
244
  /* command, embed, hgroup, keygen(암호화관련, form 내에서 활용), menu, output, ruby(,rt, rp; 한자/가나문자의 발음/훈독 등), wbr, acronym, applet, big, object */
60
245
 
61
-
62
246
  /* 인터렉션 요소 */
63
- a {display:block; color:#333; text-decoration:none; cursor: pointer;}
64
- input, select, button, textarea {display:block; max-width:100%; outline:none; background:transparent; box-shadow:none; border-radius:0; caret-color:transparent;}
65
- button {appearance:none; cursor:pointer; font-family:inherit; user-select: none;}
66
- textarea {resize:none;}
67
- select {appearance:none; user-select: none;}
247
+ a {
248
+ display: block;
249
+ color: #333;
250
+ text-decoration: none;
251
+ cursor: pointer;
252
+ }
253
+ input,
254
+ select,
255
+ button,
256
+ textarea {
257
+ display: block;
258
+ max-width: 100%;
259
+ outline: none;
260
+ background: transparent;
261
+ box-shadow: none;
262
+ border-radius: 0;
263
+ caret-color: transparent;
264
+ }
265
+ button {
266
+ appearance: none;
267
+ cursor: pointer;
268
+ font-family: inherit;
269
+ user-select: none;
270
+ }
271
+ textarea {
272
+ resize: none;
273
+ }
274
+ select {
275
+ appearance: none;
276
+ user-select: none;
277
+ }
68
278
  select::-ms-expand {
69
279
  /* IE 8 */
70
280
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
71
281
  /* IE 5-7 */
72
282
  filter: alpha(opacity=0);
73
283
  /* Good browsers :) */
74
- opacity:0;
75
- }
76
- input::placeholder {opacity:1; color:#959595;}
77
- input:focus::placeholder {color:transparent;}
78
- textarea::placeholder {opacity:1; color:#959595;}
79
- textarea:focus::placeholder {color:transparent;}
80
- [type=button], [type=reset], [type=submit] {appearance: button;}
81
- [type=search] {appearance: textfield; outline-offset:-2px}
82
- :-webkit-inner-spin-button, ::-webkit-outer-spin-button {height:auto}
83
- ::-webkit-search-decoration {appearance:none}
84
- ::-webkit-search-cancel-button {caret-color: transparent; border-color: transparent; display: none;}
85
- ::-webkit-file-upload-button {appearance: button;}
86
- input[type=text] {appearance:none;}
87
- input[type=date] {appearance:none;}
88
- input[type=date]::-webkit-inner-spin-button {display:none;}
89
- input[type=date]::-webkit-calendar-picker-indicator {opacity:0;}
90
- input[type=date]::-webkit-clear-button {display: none;}
91
- input[type=date]::-ms-clear {display: none;}
92
- input[type=number] {appearance:none;}
93
- input[type=number]::-webkit-inner-spin-button {display:none;}
94
- input[type=number]::-webkit-calendar-picker-indicator {opacity:0;}
95
- input[type=number]::-webkit-clear-button {display: none;}
96
- input[type=number]::-ms-clear {display: none;}
97
- input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; -moz-appearance:none; appearance:none; }
98
- input[type=range]::-ms-track { cursor:pointer; background: transparent; border-color:transparent; color: transparent; }
284
+ opacity: 0;
285
+ }
286
+ input::placeholder {
287
+ opacity: 1;
288
+ color: #959595;
289
+ }
290
+ input:focus::placeholder {
291
+ color: transparent;
292
+ }
293
+ textarea::placeholder {
294
+ opacity: 1;
295
+ color: #959595;
296
+ }
297
+ textarea:focus::placeholder {
298
+ color: transparent;
299
+ }
300
+ [type="button"],
301
+ [type="reset"],
302
+ [type="submit"] {
303
+ appearance: button;
304
+ }
305
+ [type="search"] {
306
+ appearance: textfield;
307
+ outline-offset: -2px;
308
+ }
309
+ :-webkit-inner-spin-button,
310
+ ::-webkit-outer-spin-button {
311
+ height: auto;
312
+ }
313
+ ::-webkit-search-decoration {
314
+ appearance: none;
315
+ }
316
+ ::-webkit-search-cancel-button {
317
+ caret-color: transparent;
318
+ border-color: transparent;
319
+ display: none;
320
+ }
321
+ ::-webkit-file-upload-button {
322
+ appearance: button;
323
+ }
324
+ input[type="text"] {
325
+ appearance: none;
326
+ }
327
+ input[type="date"] {
328
+ appearance: none;
329
+ }
330
+ input[type="date"]::-webkit-inner-spin-button {
331
+ display: none;
332
+ }
333
+ input[type="date"]::-webkit-calendar-picker-indicator {
334
+ opacity: 0;
335
+ }
336
+ input[type="date"]::-webkit-clear-button {
337
+ display: none;
338
+ }
339
+ input[type="date"]::-ms-clear {
340
+ display: none;
341
+ }
342
+ input[type="number"] {
343
+ appearance: none;
344
+ }
345
+ input[type="number"]::-webkit-inner-spin-button {
346
+ display: none;
347
+ }
348
+ input[type="number"]::-webkit-calendar-picker-indicator {
349
+ opacity: 0;
350
+ }
351
+ input[type="number"]::-webkit-clear-button {
352
+ display: none;
353
+ }
354
+ input[type="number"]::-ms-clear {
355
+ display: none;
356
+ }
357
+ input[type="range"]::-webkit-slider-thumb {
358
+ -webkit-appearance: none;
359
+ -moz-appearance: none;
360
+ appearance: none;
361
+ }
362
+ input[type="range"]::-ms-track {
363
+ cursor: pointer;
364
+ background: transparent;
365
+ border-color: transparent;
366
+ color: transparent;
367
+ }
99
368
  /*input[type=range]::-webkit-slider-runnable-track {} /*슬라이더 영역 스타일링*/
100
369
  /*input[type=range]::-webkit-slider-thumb {
101
370
  -webkit-appearance: none;
@@ -113,19 +382,38 @@ input[type=range]::-ms-track { cursor:pointer; background: transparent; border-c
113
382
  cursor:pointer;
114
383
  border-radius:50%;
115
384
  }*/
116
- input[type=checkbox] {appearance: checkbox;}
117
- input[type=time] {}
118
- input[type=button] {}
119
- input[type=email] {}
120
- input[type=password] {}
121
- input[type=reset] {}
122
- input[type=search] {}
123
- input[type=submit] {}
124
- input[type=tel] {}
125
- button:disabled {cursor:default;}
126
- progress { -webkit-appearance: none; border:1px solid #e1e1e1; }
127
- progress::-webkit-progress-bar { background-color:#fff }
128
- progress::-webkit-progress-value { background-color:grey; }
385
+ input[type="checkbox"] {
386
+ appearance: checkbox;
387
+ }
388
+ input[type="time"] {
389
+ }
390
+ input[type="button"] {
391
+ }
392
+ input[type="email"] {
393
+ }
394
+ input[type="password"] {
395
+ }
396
+ input[type="reset"] {
397
+ }
398
+ input[type="search"] {
399
+ }
400
+ input[type="submit"] {
401
+ }
402
+ input[type="tel"] {
403
+ }
404
+ button:disabled {
405
+ cursor: default;
406
+ }
407
+ progress {
408
+ -webkit-appearance: none;
409
+ border: 1px solid #e1e1e1;
410
+ }
411
+ progress::-webkit-progress-bar {
412
+ background-color: #fff;
413
+ }
414
+ progress::-webkit-progress-value {
415
+ background-color: grey;
416
+ }
129
417
 
130
418
  // .readonly {display:none;}
131
419
 
@@ -149,8 +437,12 @@ a {
149
437
 
150
438
  /* 모바일 */
151
439
  @media (orientation: landscape) {
152
- html.mobile-device {font-size: 1vw;}
440
+ html.mobile-device {
441
+ font-size: 1vw;
442
+ }
153
443
  }
154
444
  @media (orientation: portrait) {
155
- html.mobile-device {font-size: 1vw;}
445
+ html.mobile-device {
446
+ font-size: 1vw;
447
+ }
156
448
  }
@@ -22,7 +22,9 @@
22
22
  --aspect-factor: 1;
23
23
 
24
24
  // 최종 표준 값: 설계상 기준 rem(=10px @ FHD)을 유지하되, 해상도/배율 보정 적용
25
- --responsive-standard: calc(var(--responsive-size) * var(--dpi-factor) * var(--aspect-factor));
25
+ --responsive-standard: calc(
26
+ var(--responsive-size) * var(--dpi-factor) * var(--aspect-factor)
27
+ );
26
28
 
27
29
  font-size: var(--responsive-standard);
28
30
  }
@@ -30,28 +32,42 @@
30
32
  // 고배율(배율 125% 이상 추정) 보정: 소폭 축소
31
33
  // DPI 보정: Mac Retina(2dppx)에는 영향이 없도록 범위를 제한
32
34
  @media (min-resolution: 1.25dppx) and (max-resolution: 1.49dppx) {
33
- :root { --dpi-factor: 0.96; }
35
+ :root {
36
+ --dpi-factor: 0.96;
37
+ }
34
38
  }
35
39
  @media (min-resolution: 1.5dppx) and (max-resolution: 1.74dppx) {
36
- :root { --dpi-factor: 0.92; }
40
+ :root {
41
+ --dpi-factor: 0.92;
42
+ }
37
43
  }
38
44
 
39
45
  // QHD 이상에서 상한을 점진적으로 상향해 4K와의 구분감 확보
40
46
  @media (min-width: 2560px) and (min-height: 1440px) {
41
- :root { --responsive-size: clamp(9px, var(--responsive-axis-min), 15px); }
47
+ :root {
48
+ --responsive-size: clamp(9px, var(--responsive-axis-min), 15px);
49
+ }
42
50
  }
43
51
  @media (min-width: 3200px) and (min-height: 1800px) {
44
- :root { --responsive-size: clamp(10px, var(--responsive-axis-min), 15.5px); }
52
+ :root {
53
+ --responsive-size: clamp(10px, var(--responsive-axis-min), 15.5px);
54
+ }
45
55
  }
46
56
  @media (min-width: 3840px) and (min-height: 2160px) {
47
- :root { --responsive-size: clamp(11px, var(--responsive-axis-min), 16px); }
57
+ :root {
58
+ --responsive-size: clamp(11px, var(--responsive-axis-min), 16px);
59
+ }
48
60
  }
49
61
 
50
62
  // 울트라와이드(21:9 이상)에서 UI가 상대적으로 작아보이는 현상 완화
51
63
  @media (min-aspect-ratio: 21/9) and (min-width: 2560px) {
52
- :root { --aspect-factor: 1.04; }
64
+ :root {
65
+ --aspect-factor: 1.04;
66
+ }
53
67
  }
54
68
  // 세로 확장형(16:10 이하)에서 과도한 확대 방지
55
69
  @media (max-aspect-ratio: 16/10) and (max-width: 1920px) {
56
- :root { --aspect-factor: 0.98; }
70
+ :root {
71
+ --aspect-factor: 0.98;
72
+ }
57
73
  }
@@ -15,10 +15,8 @@ import type { FormFieldStatePropsType } from "./state";
15
15
  * @property {Function} onCustomChange - 커스텀 입력 변경 이벤트 핸들러
16
16
  */
17
17
  export type UseFieldChangeEvents<
18
- Field extends
19
- | HTMLInputElement
20
- | HTMLTextAreaElement
21
- | HTMLSelectElement = HTMLInputElement,
18
+ Field extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =
19
+ HTMLInputElement,
22
20
  > = {
23
21
  /**
24
22
  * 입력 상태
@@ -15,10 +15,8 @@ import type { MaskType } from "./format";
15
15
  * @property {MaskType} [maskType] 입력값 마스킹 타입
16
16
  */
17
17
  export type FormFieldCommonAttrType<
18
- Field extends
19
- | HTMLInputElement
20
- | HTMLSelectElement
21
- | HTMLTextAreaElement = HTMLInputElement,
18
+ Field extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement =
19
+ HTMLInputElement,
22
20
  > = Partial<{
23
21
  /**
24
22
  * HTML 내이티브 속성
@@ -42,10 +40,8 @@ export type FormFieldCommonAttrType<
42
40
  * - dataKey: 데이터 상태관리를 위한 데이터 프로퍼티 키
43
41
  */
44
42
  export type FormFieldComponentProps<
45
- Field extends
46
- | HTMLInputElement
47
- | HTMLSelectElement
48
- | HTMLTextAreaElement = HTMLInputElement,
43
+ Field extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement =
44
+ HTMLInputElement,
49
45
  > = {
50
46
  /**
51
47
  * @example
@@ -14,8 +14,7 @@ export interface AutoCompleteOptionsCommonType {
14
14
  | GetQueryOptionsDataType;
15
15
  }
16
16
 
17
- export interface AutoCompletePartnerOptionsType
18
- extends AutoCompleteOptionsCommonType {
17
+ export interface AutoCompletePartnerOptionsType extends AutoCompleteOptionsCommonType {
19
18
  data: AutoCompletePartnerDataType[];
20
19
  }
21
20
 
@@ -23,10 +23,8 @@ export type InputContainerProps = FormFieldItemContainerProps & {
23
23
  * Input; 입력창 속성
24
24
  */
25
25
  export type InputAttrType<
26
- Field extends
27
- | HTMLInputElement
28
- | HTMLTextAreaElement
29
- | HTMLSelectElement = HTMLInputElement,
26
+ Field extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =
27
+ HTMLInputElement,
30
28
  > = FormFieldCommonAttrType<Field> &
31
29
  Partial<{
32
30
  defaultValue: string;